Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是不是;pthread_mutex_t mutex={0}";初始化互斥?_C++_C_Linux_Pthreads_Mutex - Fatal编程技术网

C++ 是不是;pthread_mutex_t mutex={0}";初始化互斥?

C++ 是不是;pthread_mutex_t mutex={0}";初始化互斥?,c++,c,linux,pthreads,mutex,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; 对于第一个选项,您可以通过显式调用初始化器函数来控制互斥体的初始化时间(另外:参数应该是&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;
  • 对于第一个选项,您可以通过显式调用初始化器函数来控制互斥体的初始化时间(另外:参数应该是
    &mutex
  • 第二个选项是假设
    pthread\u mutex\t
    对象的内部布局是不透明的。不应使用它
  • 第三个选项静态初始化互斥体。如果在全局或静态范围内定义,它将在程序启动时初始化。它也可以在本地范围内使用,但不建议这样做,因为它不会检查错误条件

另请参见:

PTHREAD\u MUTEX\u初始值设定项
只能与静态存储持续时间的变量一起使用。@caf:实际上是“can”还是“should”?我很好奇。我会更新答案。