0

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

这是给分段错误。

4

1 回答 1

1

我不确定你会得到什么样的错误,因为你从来没有指定你的问题到底是什么,但我假设你无法编译你的代码。

来自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

于 2013-06-21T06:16:16.947 回答