有人可以解释在什么情况下使用std :: mutex vs pthread_mutex_t是有益的。我不明白为什么我们会使用pthread_mutex_t。感谢
答案 0 :(得分:8)
pthread_mutex_t
是一个POSIX解决方案(可用于Linux和其他UNIX系统),它在c ++ 11将同步原语引入c ++库之前就已存在。您现在应该使用std::mutex
,其中包括更多跨平台(也可以在Windows下使用)。
答案 1 :(得分:5)
std :: mutex只是支持pthreads的系统上pthread_mutex的一个薄包装器。
通常,std :: thread原语上的操作与本机版本(pthreads或windows threads)相比非常有限。如果您不需要这些功能,则应始终使用std ::版本,但如果确实需要高级功能,则别无选择,只能使用本机版本。
答案 2 :(得分:1)
std::mutex
来自标准库,因此如果您使用它,您的代码也将在未提供pthread的平台上编译。例如,在Windows std::mutex
下使用本机WinAPI互斥实现。
最好始终使用std::mutex
。
答案 3 :(得分:0)
有关缺省值之外可用的其他POSIX互斥锁类型的信息,请参见pthread_mutexattr。尽管std :: recursive_mutex提供了主要的递归与非递归之一,但对于BSD优先级上限等情况并非如此。