尽管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();
}
答案 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上)