“pthread_mutex_t mutex = {0}”初始化互斥锁吗?

时间:2013-01-31 09:43:10

标签: c++ c linux pthreads mutex

是否可以通过这种方式初始化互斥锁:

pthread_mutex_t  mutex = {0};

以下3个互斥锁初始化有什么区别:

1) pthread_mutex_init(&mutex, NULL);
2) pthread_mutex_t  mutex = {0};
3) pthread_mutex_t  mutex = PTHREAD_MUTEX_INITIALIZER;

1 个答案:

答案 0 :(得分:10)

  • 使用第一个选项,您可以通过显式调用初始化函数来控制互斥锁初始化的时间(同样:参数应为&mutex)。
  • 第二个选项是假设pthread_mutex_t对象的内部布局,它应该是不透明的。 不应该使用
  • 第三个选项静态初始化互斥锁。如果在全局或静态范围内定义,它将在程序启动时初始化。它也可以在本地范围内使用,但不建议这样做,因为它不会检查错误情况。

另请参阅:http://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html