将C ++ 11线程操作与QThread操作混合使用

时间:2013-06-03 15:31:10

标签: c++ multithreading qt c++11 qthread

是否可以将c ++ 11互斥锁与Qthread混合使用?

例如,如果你有一个dll,你想使用一个qt gui,它将从你的Dll加载一个函数,还有一个函数来更新单独线程上的gui。 Dll函数包含一个大循环,并且放置了一个C ++ 11互斥锁,这样只有一个线程可以读取或写入Dll函数中使用的变量。是否可能或可行使用QThreads或QThreads是否必须与QMutex一起使用,同样也适用于C ++ 11线程操作?

1 个答案:

答案 0 :(得分:1)

我想不出你为什么不能在QThread上使用c ++ 11互斥的原因。 锁定QMutex或C ++ 11互斥锁将产生相同的效果:除非已解锁(或配置为递归锁定,如果可用),否则无法重新锁定它。 我不认为QMutex实现与QThread紧密结合。

我认为在Linux中实现时,C ++ 11互斥锁和QMutex都依赖于pthread。 在Windows上实现时,它们可能都依赖于Windows API。

当然,如果我错了,请随时纠正我。

顺便说一句,您是否使用QThread运行C ++ 11互斥体测试?