2

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

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;
4

1 回答 1

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

另见: http: //pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_mutex_init.html

于 2013-01-31T09:47:32.353 回答