信号量的作用:一个线程等在哪里,其他的线程发出通知让等待的线程继续运行。
线程A
std::mutex m;
std::condition_variable c;
void A_proc()
{
std::unique_lock<std::mutex> lk(m); //进入临界区
c.wait(m); //A线程等待直到通知到来
}
void B_proc()
{
std::unique_lock<std::mutex> lk(m); //进入临界区
c.notify_one(); //通知线程A继续
}
这里需要注意在线程A进入临界区后B是不能同时进入的,当A调用wait后将放弃临界区控制,这导致B可以进入并进行通知notify_one。
本文详细介绍了如何使用C++中的标准库实现线程间的同步。通过信号量和条件变量,文章展示了线程A如何等待直至被线程B唤醒的过程。这种机制确保了线程间正确且高效的数据交换。
1419

被折叠的 条评论
为什么被折叠?



