2016-06-23 118 views
1

我想在特定時間喚醒線程。我可以這樣做嗎?在指定時間喚醒線程

#include <chrono> 
#include <thread> 
using namespace std::literals::chrono_literals; 
void foo() {} 
int main() 
{ 
    using clock = std::chrono::steady_clock; 
    clock::time_point next_time_point = clock::now() + 20s; 
    foo(); 
    std::this_thread::sleep_until(next_time_point); 
} 

回答

3

你從來不應該使用睡眠。相反,等待條件變量

+0

還要考慮條件變量可以有自相矛盾的喚醒,這要求它們與一個附加條件(例如,你檢查一個bool)結合起來。 – Taredon

+0

你有沒有一個例子。非常感激! – Damian

+0

你有一個例子在這裏http://en.cppreference.com/w/cpp/thread/condition_variable – crn