【发布时间】:2019-11-27 14:10:42
【问题描述】:
在其中一个项目中,我正在从 C 迁移到 C++。许多 C 代码使用与此库关联的 pthread 和 mutex 进行多线程处理。我想逐步执行增量迁移。我想从数据结构开始,因为它们是最明显的,但它们需要使用 pthread 互斥锁进行同步。使用 pthread 互斥锁是安全的还是只有标准库线程基础设施(如std::mutex)才能保证适当的内存线程间内存一致性?
【问题讨论】:
-
使用 posix 线程并没有突然变得不安全,只是因为现在 C++ 也有线程和互斥体。您有没有想到可能有问题的特定情况?
-
在 POSIX 平台上,很可能所有线程和同步类都是使用 pthread 实现的。
-
您的 std::thread 和朋友的 C++ 实现有大约 100% 的可能性是 pthread 的薄包装。很可能会完全兼容。