// 线程的时间限制
thread t103(f, 1, 2);
this_thread::sleep_for(chrono::milliseconds(3));
chrono::steady_clock::time_point tp = chrono::steady_clock::now()
+ chrono::milliseconds(4);
this_thread::sleep_until(tp);
// 锁的时间限制
mutex mu;
unique_lock<mutex> locker(mu);
locker.try_lock_for(chrono::milliseconds(3));
locker.try_lock_until(tp);
// 条件变量的时间限制
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);