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

3

能否将c++11的互斥锁与QThread混合使用?

例如,如果您有一个Dll,想要与qt gui一起使用,这个gui将从您的Dll中加载一个函数,并且还会在单独的线程上更新gui。 Dll函数包含一个大循环,并且放置了C++11互斥锁,以便只有一个线程可以从正在使用的变量中读取或写入。是否可以或可行使用QThreads,还是必须使用QMutexs,类似于C++11线程操作?

1个回答

1
我想不到任何理由为什么不能在QThread中使用C++11互斥锁。锁定QMutex或C++11互斥锁将产生相同的效果:除非已解锁(或配置为递归锁,如果可用),否则无法重新锁定它。 我认为QMutex实现与QThread没有紧密耦合。
我猜想,在Linux上实现时,C++11互斥锁和QMutex都依赖于pthread。在Windows上实现时,它们可能都依赖于Windows API。
当然,如果我说错了,请随时纠正我。
顺便问一下,您是否使用C++11互斥锁对QThread进行了任何测试?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接