互斥是否与C ++ 11中的pthread兼容?

时间:2015-01-22 16:50:37

标签: c++11 pthreads mutex

尽管pthread_mutex,使用C ++ 11,互斥(#include <mutex>)会使pthread安全吗?

请找一个例子:

// 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);

服务器和客户端呼叫foo()

mutex mut;
void foo (){
     mut.lock();
     CRITICAL_WRITE();
     mut.unlock();
}

1 个答案:

答案 0 :(得分:3)

具体实施。我所知道的C ++ 11标准库(例如GCC 4.9中的libstdc++,以及Clang/LLVM中可能还libc++)实际上是在现有{{3}之上构建的Linux上的库。

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

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

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