Потоки, заблокированные std::mutex::lock()
или переменной условия, спят таким образом, что освобождает ядро для других процессов, или я должен вручную перевести эти потоки в спящий режим?И если это правда, std::mutex::try_lock()
позволит способ вращать поток без сна?
Причина, по которой я спрашиваю: я хочу иметь три состояния для потоков в моем пуле потоков, которые не используются: вращение в течение 2 миллисекундзатем блокируется мьютексом в течение 250 миллисекунд (при условии, что это позволяет им спать и отключать ядро), а затем, наконец, освобождается.
Я хочу избежать вызова режима сна вручную, если я могу помочь, настраивая режим снаПродолжительность будет трудно.Так я могу спокойно оставить это мьютексу?