【发布时间】:2013-12-25 01:16:08
【问题描述】:
我正在学习 C++11,但遇到了线程问题。我的一般问题:C++11 互斥锁是否与不是使用 C++11 标准库创建的线程兼容?
我想在使用 C++11 创建的线程和由我无法控制的第三方库创建的另一个线程之间安全地共享信息。
例如,我的应用程序使用 PortAudio,它为音频输出创建自己的线程。我不确定它是使用 pthread 还是特定于操作系统的线程库,但我知道 PortAudio 不是用 C++11 编写的。我想在 GUI 线程(使用 C++11 线程)和使用互斥锁的 PortAudio 线程之间安全地共享数据。
同样,我可以使用 C++11 互斥锁来同步 QT QThreads 和 C++11 线程吗?
【问题讨论】:
-
呃,其他代码使用的是什么互斥锁?您不能期望使用多个不同的互斥锁来保护单个资源。必须是唯一的互斥体。
-
目的是在不同类型的线程中使用单个互斥锁。
-
该标准对您没有帮助,因为您使用的是特定于实现的线程。但可以肯定的是,在任何运行这些库的平台上,互斥锁都可以在任何线程上正常工作。
-
pthread 互斥锁可以与 C++ 线程一起使用,反之亦然。但标准不会告诉你。
-
@Tim 不会是 UB。这将是实现定义的行为。
标签: c++ multithreading qt c++11 pthreads