Приоритет просто означает, что существует определенное количество предпочтений для одного потока перед другим.Всегда может случиться так, что поток по какой-то причине не сможет продвинуться вперед, и поток с более низким приоритетом прекратит его.
Представьте, например, если ReleaseMutex
окажется вкакой-то редкий путь к коду из-за странного пограничного случая и кода для обработки этого пограничного случая выгружен на диск.Поток с именем ReleaseMutex
не готов к запуску до тех пор, пока не появятся эти кодовые страницы, поэтому поток с более низким приоритетом может получить ЦП.
Не думаю, что это особенно вероятный сценарий.Но дело в том, что этого не произойдет.Приоритет не является исключительным методом или механизмом синхронизации.Это просто способ указать, что вы предпочитаете, когда у системы есть выбор.
Если это вызывает у вас проблемы, у вас есть что-то очень неправильное в вашем дизайне.Если вы пытаетесь использовать приоритеты потоков как способ гарантировать конкретное поведение (а не указывать предпочтения), вы обрабатываете исключение совершенно неправильно.