| Предыдущий | Следующий |
| STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE | STATUS_TIMER_RESUME_IGNORED |
STATUS_NO_YIELD_PERFORMED
У планировщика не было потока для выполнения запрошенной уступки
Операция уступки просит планировщик предоставить возможность выполнения другому готовому потоку. Контракт Win32-функции SwitchToThread ограничен текущим процессором: если на нём нет другого готового потока, переключение не происходит. STATUS_NO_YIELD_PERFORMED представляет такой результат без переключения в пространстве нативных статусов.
Это не доказывает, что в системе есть только один поток или что другие процессоры простаивают. Также цикл с уступками не становится корректным механизмом синхронизации. Если код зависит от прогресса другого рабочего потока, используйте событие, семафор, условную переменную, порт завершения или иной явный механизм координации вместо многократной уступки.
Что исследовать
- Зафиксируйте цикл планировщика и причину, по которой вызывающая сторона ожидала готовности другого потока.
- Проверьте привязку к процессорам и ограничения параллелизма, прежде чем интерпретировать результат глобально.
- Замените ожидание через уступку явной синхронизацией, когда требуется гарантированный прогресс.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
