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 *)メッセージ);

これにより、セグメンテーション違反が発生しています。

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 に答える