| Предыдущий | Следующий |
| STATUS_CALLBACK_RETURNED_LANG | STATUS_CALLBACK_RETURNED_THREAD_AFFINITY |
STATUS_CALLBACK_RETURNED_PRI_BACK
Обратный вызов оставил поток пула в фоновом режиме
Фоновый режим Windows снижает приоритеты планирования ЦП и ввода-вывода для вызывающего потока. Это состояние потока, поэтому его включение внутри обратного вызова влияет на последующую работу, использующую тот же рабочий поток. Следующий обратный вызов может неожиданно замедлиться, даже если его собственная настройка приоритета корректна.
Фоновый режим должен охватывать только предполагаемую работу и отключаться до возврата. Восстановления одного числового базового приоритета недостаточно, поскольку фоновый режим влияет и на другие аспекты планирования ресурсов.
Что следует проверить
- Записывайте приоритет при входе и выходе, переходы фонового режима, наблюдаемый приоритет ввода-вывода и идентификатор рабочего потока.
- Сопоставляйте
THREAD_MODE_BACKGROUND_BEGINсTHREAD_MODE_BACKGROUND_ENDв том же потоке. - Выполняйте восстановление в гарантированном коде очистки, а не после последней ожидаемой инструкции.
- Проверяйте вложенные вспомогательные функции, чтобы из фонового режима выходил только компонент, который его включил.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: фоновый режим обработки приоритета потока
- Microsoft: SetThreadPriority
- Microsoft: потоки пула и среды обратных вызовов
Нужно найти другой код? Найти другой код состояния или ошибки.
