Ответ 1
std::this_thread::yield
сообщает реализации перенести выполнение потоков, которые должны использоваться в случае, когда вы находитесь в состоянии ожидания ожидания, например в пуле потоков:
...
while(true) {
if(pool.try_get_work()) {
// do work
}
else {
std::this_thread::yield(); // other threads can push work to the queue now
}
}
std::this_thread::sleep_for
можно использовать, если вы действительно хотите подождать определенное количество времени. Это может быть использовано для задачи, где время действительно имеет значение, например: если вы действительно хотите только подождать 2 секунды. (Обратите внимание, что реализация может подождать дольше заданной продолжительности)