我该如何初始化pthread互斥锁?

gaa*_*kam 1 c mutex initialization pthreads

#include <pthread.h>

pthread_mutex_t* mut;

int main()
{
        mut = PTHREAD_MUTEX_INITIALIZER;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码吐出来了error: expected expression before ‘{’ token.

#include <pthread.h>

pthread_mutex_t* mut = PTHREAD_MUTEX_INITIALIZER;

int main()
{

}
Run Code Online (Sandbox Code Playgroud)

上面的代码吐出警告:标量初始化器周围的括号

那么我应该如何初始化互斥锁呢?

syn*_*gma 7

这是一个类型错误,您应该使用:pthread_mutex_t而不是pthread_mutex_t*:

pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)

为什么编译器抱怨的原因是试图分配的这个宏扩展PTHREAD_MUTEX_INITIALIZER指针:

{ { 0, 0, 0, 0, 0, __PTHREAD_SPINS, { 0, 0 } } }
Run Code Online (Sandbox Code Playgroud)

通过纠正的方法,您可以传递到&mut您需要的任何地方pthread_mutex_t*.