Как уже отмечалось в комментариях, это зависит только от вашего варианта использования. Основное различие между ними состоит в том, что condition_variable
может проснуться раньше, если вы его активируете. Вы также можете добавить предикат, который должен быть удовлетворен, чтобы фактически проснуться, но это только дополнение качества жизни. И, кстати, эквивалент sleep_for
равен wait_for
, а не wait_until
. condition_variable
также отлично подходит для связи или синхронизации между несколькими потоками.
Учитывая все, что вы сказали, я бы использовал condition_variable
по следующим причинам:
- Переводить поток в спящий режим на более длительные периоды времени не очень хорошая идея, потому что ваше приложение может выйти в любое время (или, скорее, может быть запрошено выйти). В этом случае вы, вероятно, захотите, чтобы ваш поток завершился правильно, поэтому вы должны иметь возможность разбудить его в любое время.
- Вы хотите изменить конфиг на лету. Если ваш поток должен перезапуститься с новыми параметрами или если вам нужен этот поток для фактической загрузки файла конфигурации, вы также не хотите ждать окончания следующих 20 минут.