请教一下各位,我有个地方需要多个线程排队访问某个资源的问题,我有个排队
对象 queue,他有两个函数queueIn(进队列),和queueOut(出队列),
为了简单起见我这里只用了两个线程去排队,queue里面有个mutex用于互斥,queueIn里面会去lock这个互斥量,queueOut会去unlock这个互斥量,程序启动
了以后两个线程会在自己的run函数(qt,其他的类似)里面去调用queue.queueIn()进行排队,因为有互斥量的存在按道理一个线程会lock成功,而另一个线程会阻塞在里面直到前一个线程调用queueOut释放掉互斥量,但是呢结果是这两个线程居然都lock互斥量成功了,都直接通过了这个阻塞函数,互斥量居然没起到他的作用,请教一下各位大神,这种情况该怎么处理,我就是想弄个阻塞队列,让多个线程阻塞在queueIn这里,等待上一个线程资源访问完成再依次序通过,但是在目前两个线程这种简单情况下互斥量是类成员,居然表现得像是函数的局部变量一样,没起到互斥作用,请帮助解决一下,谢谢

多线程互斥失败的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- paulhee123 2019-05-06 10:32关注
加一句
thread1.join()
thread2.join()
等待所有子线程结束再运行下面代码本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报