| Предыдущий | Следующий |
| STATUS_CALLBACK_RETURNED_PRI_BACK | STATUS_LPC_HANDLE_COUNT_EXCEEDED |
STATUS_CALLBACK_RETURNED_THREAD_AFFINITY
Обратный вызов оставил изменённую привязку к процессорам
Установка привязки потока ограничивает физический рабочий поток выбранными процессорами. Поскольку потоки пула переиспользуются, обратный вызов, не восстановивший маску, может привязать несвязанную работу, перегрузить одну группу процессоров, нарушить балансировку планировщика или предположения последующих обратных вызовов.
Привязку, временно изменённую для короткого участка, чувствительного к оборудованию, необходимо восстановить до точного предыдущего значения в том же потоке. Для общего размещения нагрузки предпочтительнее размеры пула, CPU Sets или собственные потоки приложения, а не изменение состояния временного рабочего потока.
Что проверить
- Зафиксируйте привязку при входе и выходе, группу процессоров, конфигурацию CPU Set, идентификатор обратного вызова и ID рабочего потока.
- Используйте возвращаемое значение
SetThreadAffinityMaskдля восстановления предыдущей маски. - Обеспечьте структурированное восстановление при исключениях и ранних выходах.
- Проверьте сторонние кодеки, вспомогательные средства тестирования производительности и NUMA-библиотеки, которые могут внутренне менять привязку.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: SetThreadAffinityMask
- Microsoft: потоки пула и среды обратных вызовов
- Microsoft: Thread Pool API
Нужно найти другой код? Найти другой код состояния или ошибки.