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

MOH*_*MED 2 c c++ linux mutex pthreads

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

pthread_mutex_t  mutex = {0};
Run Code Online (Sandbox Code Playgroud)

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

1) pthread_mutex_init(&mutex, NULL);
2) pthread_mutex_t  mutex = {0};
3) pthread_mutex_t  mutex = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)

she*_*heu 10

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

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