你这应该用条件变量
mutex不是这么用的
【 在 capriccio (小草|长相守) 的大作中提到: 】
: 标 题: 一个std::mutex的问题(换个问法)
: 发信站: 水木社区 (Tue Sep 22 20:53:14 2020), 站内
:
: 其实我是想实现如下功能:
: mutex mt;
: 线程A:
: while(true){
: mt.lock();
: //进行一些需要等待的操作,然后产生一些数据
: mt.unlock();
: }
:
: 线程B:
: while(true){
: mt.lock();
: //取走线程A产生的数据,用时很短
: mt.unlock();
: //处理数据,以及有关的其它操作
: }
:
: 希望线程B正在在等待时,mt被线程A unlock后立刻被线程B lock,而不是被线程A再次lock。
:
: 【 在 hanjiamajia (hanjiamajia) 的大作中提到: 】
: : 楼上说的都对
: : stl 里的 mutex 是封装的操作系统提供的 native 互斥锁,后者不是公平锁,不遵循 FIFO。
: : 楼主这里应该用 semaphore
: : ...................
:
: --
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 115.171.203.*]
--
FROM 171.83.7.*