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

Does "pthread_mutex_t mutex = {0}" initialize mutex?

本文关键字:mutex 初始化 pthread      更新时间:2023-10-16

是否可以这样初始化互斥锁:

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

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