после каждой итерации - thread::sleep на 1 ms или thread::yield_now, чтобы не сжирать весь ресурс?
У него тело есть?
Await delay всегда делаю
Смотря что тебе нужно там вычислять, yield - это системный вызов и он может быть дорогим Если на это пофиг, то юзай его, если нет, то есть еще такой вариант spin_loop_hint, но он не взаимодействует с осью
Еще можно sleep(0)!
Ну, вообще, вон выше spin_loop_hint предложили: почитай доки к этой функции, может подойдёт. Хотя если ты не примитив пишешь, а какой-нибудь мутекс в цикле проверяешь, то скорее всего не подойдёт.
Если у треда есть некоторое условие, при истинности которого он должен совершать работу, а при ложности ничего не делать, то лучше блокировать тред до достижения этого условия через какой-нибудь Condvar. Простой же слип или yield оставляют треду возможность проснуться в то время, когда работы нет. Другое дело, если работу нужно выполнять всегда, но с некоторой периодичностью, тогда лучше sleep (он хотя бы не будет будить чаще положенного, а yield по идее может).
Обсуждают сегодня