请教一下各位,我有个地方需要多个线程排队访问某个资源的问题,我有个排队
对象 queue,他有两个函数queueIn(进队列),和queueOut(出队列),
为了简单起见我这里只用了两个线程去排队,queue里面有个mutex用于互斥,queueIn里面会去lock这个互斥量,queueOut会去unlock这个互斥量,程序启动
了以后两个线程会在自己的run函数(qt,其他的类似)里面去调用queue.queueIn()进行排队,因为有互斥量的存在按道理一个线程会lock成功,而另一个线程会阻塞在里面直到前一个线程调用queueOut释放掉互斥量,但是呢结果是这两个线程居然都lock互斥量成功了,都直接通过了这个阻塞函数,互斥量居然没起到他的作用,请教一下各位大神,这种情况该怎么处理,我就是想弄个阻塞队列,让多个线程阻塞在queueIn这里,等待上一个线程资源访问完成再依次序通过,但是在目前两个线程这种简单情况下互斥量是类成员,居然表现得像是函数的局部变量一样,没起到互斥作用,请帮助解决一下,谢谢
2条回答 默认 最新
悬赏问题
- ¥15 IEC61850 客户端和服务端的通讯机制
- ¥15 MAX98357a(关键词-播放音频)
- ¥15 Linux误删文件,请求帮助
- ¥15 IBMP550小型机使用串口登录操作系统
- ¥15 关于#python#的问题:现已知七自由度机器人的DH参数,利用DH参数求解机器人的逆运动学解目前使用的PSO算法
- ¥15 发那科机器人与设备通讯配置
- ¥15 Linux环境下openssl报错
- ¥15 我在使用VS编译并执行之后,但是exe程序会报“无法定位程序输入点_kmpc_end_masked于动态链接库exe上“,请问这个问题有什么解决办法吗
- ¥15 el-select光标位置问题
- ¥15 单片机 TC277 PWM