void thread_prepare(int T)
{
std::lock_guard<std::mutex> lk(mt);
data_queue.push(T);
data_con.notify_one();
}
void thread_process()
{
while(1)
{
std::unique_lock<std::mutex> lk(mt);
data_con.wait(lk,[]{return !data_queue.empty();});
std::cout<<data_queue.front()<<std::endl;
data_queue.pop();
lk.unlock();
}
}
在thread_process中,data_con的wait中,会持续等待notify,若没有Notify便会一直沉睡。
即节省线程的时间片。