C++11 中互斥锁与 pthread 兼容吗?

Moh*_*HME 2 mutex pthreads c++11

尽管如此,使用 C++11 pthread_mutexmutex ( ) 会使 pthread 安全吗?#include <mutex>

请往下找一个例子:

// Creating Server thread
pthread_create(&server_thread, NULL,Server,NULL);

// Creating Client thread
pthread_create(&client_thread, NULL, Client,NULL);

// Wait until client_thread exits
pthread_join( client_thread, NULL);
Run Code Online (Sandbox Code Playgroud)

服务器和客户端都调用foo().

mutex mut;
void foo (){
     mut.lock();
     CRITICAL_WRITE();
     mut.unlock();
}
Run Code Online (Sandbox Code Playgroud)

Bas*_*tch 5

它是特定于实现的。我所了解的 C++11 标准库(例如libstdc++GCC 4.9 中,也可能libc++来自Clang/LLVM)实际上是在 Linux 上现有的pthreads(7)库之上构建的。

原则上有人可以直接使用系统调用在 Linux 上构建一些 C++11 标准库(例如futex(2) - 与手写的汇编代码混合 - 用于互斥锁),但我不知道这样的 C++11 库。

这些线程是在 Linux 上的 pthreads 中构建的,位于低级clone(2)系统调用之上。

所以你没有正式的保证,但实际上你今天相当安全(在 Linux 上)