我是否可以以奇怪的方式使用 QMutex:将 QMutex 锁定在一个线程中,然后在另一个线程中解锁它?
问问题
1224 次
2 回答
2
根据QMutex的文档,这会导致错误:
尝试在与锁定它的线程不同的线程中解锁互斥锁会导致错误。
但是,您可以使用QSemaphore作为二进制信号量来代替 QMutex,以实现所需的行为。
//create
QSemaphore semaphore(1);
//lock in thread 1
semaphore.acquire();
//unlock in thread 2
semaphore.release();
于 2015-02-23T09:13:40.817 回答
1
不,你不能这样做:
文档到 QMutex::unlock()
“解锁互斥锁。尝试在与锁定它的线程不同的线程中解锁互斥锁会导致错误。解锁未锁定的互斥锁会导致未定义的行为。”
是的,它确实在共享内存中,但没有办法以标准方式更改它。
于 2013-09-19T23:10:54.587 回答