• 3970阅读
  • 1回复

如何将 QMutexLocker 加锁后异步释放? [复制链接]

上一主题 下一主题
离线oraclei
 

只看楼主 倒序阅读 楼主  发表于: 2013-08-18
如何将 QMutexLocker 加锁后异步释放
现在我遇到这么一个问题:PC接一读卡器,原有一个程序按F9读卡(没有源程序,不能更改)。现在开发的程序按F11读卡。读卡器任一时刻只能有一个线程读卡,不能并发读卡。

现在在F11程序里,有3个异步过程可读卡:1、通过定时器周期性的定时读卡;2、通过文件系统变化触发的事件读卡;3、通过F11热键读卡。当程序检测到按下F9后,必须禁止F11的所有线程读卡。

当前的做法是在F11程序中使用键盘HOOK检测到F9热键后,立即发送 sendEvent 给主程序,主程序成功执行 QMutexLocker 锁定读卡互斥量后就立即返回,控制转交键盘HOOK过程,发送F9键盘消息,激活F9程序读卡,该读卡时间定会在2s内结束,所以F11程序锁定读卡时间在2s后释放QMutexLocker。因此 Mutex 加锁后只能异步释放,这个过程如何处理?能否给个思路?






离线oraclei

只看该作者 1楼 发表于: 2013-08-18
我真是个棒槌,直接使用 QMutex::lock() 和 QMutex::unlock() 就行了,自己鄙视自己一下。QMutexLocker用惯了,竟然把更基本的 QMutex 忘了。
快速回复
限100 字节
 
上一个 下一个