当我在创建线程时将pthread_mutex_attr作为参数时,我遇到了问题。如果我将属性作为 NULL 传递它可以正常工作,但不希望这个NULL,
我在这里发布代码,请帮我纠正错误并学习。
pthread_mutex_t thread_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_t thread1;
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(&thread_mutex, &attr);
ret = pthread_create(&thread1, NULL, my_func, (void *)message);
pthread_mutexattr_destroy(&attr);
pthread_mutex_destroy(&thread_mutex);
pthread_exit(NULL);
如果我像这样传递attr
ret = pthread_create(& thread1,& attr,upload_data,(void *)message);
这给出了分段错误。
答案 0 :(得分:0)
我不确定你得到了什么样的错误,因为你从未指明过你的问题究竟是什么,但我认为你无法编译你的代码。
来自man pthread_create
:
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
这表明pthread_create不使用pthread_mutex_attr
但pthread_attr