我是否允许以奇怪的方式使用QMutex:将QMutex锁定在一个线程中,然后在另一个线程中将其解锁?
答案 0 :(得分:1)
根据QMutex的文档,这会导致错误:
尝试在与锁定它的线程不同的线程中解锁互斥锁会导致错误。
但是,您可以使用QSemaphore作为二进制信号量来代替QMutex,以实现想要的行为。
//create
QSemaphore semaphore(1);
//lock in thread 1
semaphore.acquire();
//unlock in thread 2
semaphore.release();
答案 1 :(得分:0)
不,你不能这样做:
Doc to QMutex :: unlock()
“解锁互斥锁。尝试在锁定它的另一个线程中解锁互斥锁会导致错误。解锁未锁定的互斥锁会导致未定义的行为。”
是的,它确实在共享内存中,但没有办法以标准方式更改它。