PTHREAD_MUTEX_INITIALIZER問題


 

PTHREAD_MUTEX_INITIALIZER 與 expected expression before ‘{’ token

在進行 Posix thread 編程時,出現以下編譯錯誤:
error: expected expression before ‘{’ token

出現錯誤的語句為 products.lock = PTHREAD_MUTEX_INITIALIZER;

查了一下,在 pthread.h 中, PTHREAD_MUTEX_INITIALIZER 定義為:
# define PTHREAD_MUTEX_INITIALIZER \
    { { 0, 0, 0, 0, 0, 0, { 0, 0 } } }

原因應該比較清楚了,結構體的初始化問題。 PTHREAD_MUTEX_INITIALIZER 用在靜態類型的互斥量中,而且應該在互斥量定義的時候就用 PTHREAD_MUTEX_INITIALIZER 進行初始化,否則用 pthread_mutex_init 進行初始化。
 
pthread_mutex_t mutex;
pthread_mutex_init(&mutex,NULL); //NULL為默認的互斥鎖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM