使用pthread互斥锁属性获取错误

时间:2013-06-21 04:46:13

标签: multithreading

当我在创建线程时将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);

这给出了分段错误。

1 个答案:

答案 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_attrpthread_attr