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”?我很好奇。我会更新答案。