建立三個執行緒,分別列印 a,b,c

2021-10-08 05:17:36 字數 633 閱讀 9469

建立三個執行緒,分別列印 a,b,c. 現在要求用訊號量對執行緒進行同步,無論程式執行 多少次、如何執行,都能使整個程式依次列印 a b c a b c a b c . . .  一直死迴圈 

#include

#include

#include

#include

#include

#include

#include

#include

#define max 3

sem_t sem1;

sem_t sem2;

sem_t sem3;

void *fun1(void *arg)}

void *fun2(void *arg)

}void *fun3(void *arg)

}int main()

sem_destroy(&sem1);   

sem_destroy(&sem2);  

sem_destroy(&sem3); 

exit(0);

}

結果如下: 

三個執行緒ABC,交替列印ABC

問題為三線程間的同步喚醒操作,主要的目的就是threada threadb threadc threada 迴圈執行三個執行緒。為了控制線程執行的順序,那麼就必須要確定喚醒 等待的順序,所以每乙個執行緒必須同時持有兩個物件鎖,才能繼續執行。乙個物件鎖是prev,就是前乙個執行緒所持有的物件鎖。還有乙...

三個執行緒交替列印ABC 最優演算法

看了很多關於執行緒交替列印abc的,千奇百怪,有用鎖的,也有用原子操作的,還有用巢狀同步 塊的,實在是很沒有必要,演算法題追求的是簡短精煉,思想昇華。演算法題就是活到老學到老啦,下面就給大家介紹乙個最好的演算法思路。仔細看哦,不難理解。1.volatile關鍵字 多執行緒操作同乙個變數的時候,首先獲...

學習點滴 c 三個執行緒迴圈列印ABC

用上了實驗室新買的伺服器,美滋滋 小試牛刀一番 include includeusing namespace std pthread mutex t mutex int k 0 全域性區變數是共享的哦 pthread cond t cond pthread cond initializer void...