Linux多執行緒 3個子執行緒輪流執行

2021-08-08 15:22:54 字數 1487 閱讀 8683

迅雷筆試題:

編寫乙個程式,開啟3個執行緒,這3個執行緒的id分別為a、b、c,每個執行緒將自己的id在螢幕上列印10遍,要求輸出結果必須按abc的順序顯示;如:abcabc….依次遞推。

程式:#include 

#include 

const

intthread_number = 3;  

// 子執行緒的互斥量和條件變數 

pthread_mutex_t thread_mutex[thread_number];  

pthread_cond_t thread_cond[thread_number];  

// 子執行緒是否正在等待 

boolthread_wait_flag[thread_number];  

// 標識輪到哪個子執行緒輸出其id 

pthread_mutex_t mutex;  

intthread_turn;  

void*thread_func(void*arg);  

intmain(intargc,char**argv)  

pthread_mutex_init(&mutex, null);  

thread_turn = 0;  

for(inti = 0; i < thread_number; ++i)  

thread_wait_flag[i] =false;  

for(inti = 0; i < thread_number; ++i)  

for(inti = 0; i < thread_number; ++i)  

printf("\n"

);  

return0;  

}void*thread_func(void*arg)  

pthread_mutex_unlock(&thread_mutex[thread_turn]);  

}if(count == 10) // 若是第1、2個子執行緒,發出訊號後,退出 

break;  

}else

// 否則,等待 

}return(void*)0;  

}  

3 Linux多執行緒,執行緒同步

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

3 Linux多執行緒,執行緒同步

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

多執行緒(3) 執行緒通訊

執行緒之間的通訊 多個執行緒在處理同乙個資源,但是處理的動作 執行緒的任務 卻不相同。通過一定的手段使各個執行緒能有效的利用資源。而這種手段即 等待喚醒機制。等待喚醒機制所涉及到的方法 wait 等待,將正在執行的執行緒釋放其執行資格 和 執行權,並儲存到執行緒池中。notify 喚醒,喚醒執行緒池...