我收到的時候我給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(&線程1,& ATTR,upload_data,(無效*)消息);
這是給分段錯誤。
@Ulrich ...謝謝我試圖完全一樣,但didnt't獲得該格式。我必須學習很多東西。 :) – someone
除了已經接受的答案,需要注意的是創建一個線程,可引用特定的互斥體(否則,爲什麼是互斥即使在那裏?),然後,該線程完成(即你的避風港」前t在它上面調用'pthread_join()'),你就銷燬了這個互斥體並退出。即使它不是您造成的問題,它很可能咬你的未來... – twalberg