Linux多執行緒同步入門問題

2021-10-05 17:01:04 字數 992 閱讀 2619

示例:主線程產生了兩個執行緒,乙個模擬生產放入,乙個模擬取水果吃

幾點注意事項:

#include 使用多執行緒時必須引入的標頭檔案

#include sem_t結構是訊號量的資料型別,它本質上是乙個長整型的數。使用sem_*必須引入這個標頭檔案

報錯資訊:undefined reference to `sem_init';undefined reference to `sem_post';undefined reference to `sem_wait'

解決方案:gcc編譯時需要加入乙個多執行緒選項 gcc -pthread -o filename filename.c

#include #include #include #include #include int n;

sem_t product,empty;

void *eat(void *arg)//while

}void *putfruit(void *arg)//while

}int main()

semi = sem_init(&product, 0, 0); //初始設定0個產品數

if (semi == -1)

ret1 = pthread_create(&threadc, null,eat,null);

ret2 = pthread_create(&threadp, null,putfruit,null);

if (ret1 != 0|ret2!=0)

ret1 = pthread_join(threadc, &thread_result1);

ret2 = pthread_join(threadp, &thread_result2);

if (ret1!=0||ret2!=0)

//if error

return 0; } //main

Linux多執行緒,執行緒同步

5 執行緒私有資料 程序內的所有執行緒共享程序的資料空間,因此全域性變數為所有執行緒所共有。但有時執行緒也需要儲存自己的私有資料,這時可以建立執行緒私有資料 thread specific date tsd 來解決。例如我們常見的變數 errno 它返回標準的出錯資訊。它顯然不能是乙個區域性變數,幾...

Linux多執行緒 執行緒同步

執行緒同步的概念 即當有乙個執行緒在對記憶體進行操作時,其他執行緒都不可以對這個記憶體位址進行操作,直到該執行緒完成操作,其他執行緒才能對該記憶體位址進行操作,而其他執行緒又處於等待狀態。在一般情況下,建立乙個執行緒是不能提高程式的執行效率的,所以要建立多個執行緒。但是多個執行緒同時執行的時候可能呼...

多執行緒同步問題

在應用程式中使用多個執行緒的乙個好處是每個執行緒都可以非同步執行。對於 windows 應用程式,耗時的任務可以在後台執行,而使應用程式視窗和控制項保持響應。對於伺服器應用程式,多執行緒處理提供了用不同執行緒處理每個傳入請求的能力。否則,在完全滿足前乙個請求之前,將無法處理每個新請求。然而,執行緒的...