#include<iostream> #include<thread> #include<mutex> #include<future> #include<string> #include<deque>
using namespace std;
int factorial(int N) { int res = 1;
for (int i = N; i > 1; i--) { res *= i; } return res; } std::mutex mu; std::condition_variable cond; std::deque <std::packaged_task<int()> >task_q;
int main(void) { //第一种情况的线程——thread及其时间限制 std::thread t1(factorial, 6); std::this_thread::sleep_for(chrono::milliseconds(3)); //等待3毫秒 chrono::steady_clock::time_point tp = chrono::steady_clock::now() + chrono::milliseconds(4); std::this_thread::sleep_until(tp);
//第二种情况——unique_lock
std::mutex mu; std::unique_lock<mutex> locker(mu); locker.try_lock_for(chrono::milliseconds(3)); locker.try_lock_until(tp);
//第三种——condition_variable std::condition_variable cond; cond.wait_for(locker, chrono::milliseconds(3)); cond.wait_until(locker, tp);
//第四种情况_future std::promise<int> p; std::future<int> f = p.get_future(); f.wait_for(chrono::milliseconds(3)); f.wait_until(tp);
return 0; } |