Linux下多執行緒交叉列印1 100的奇偶數

2021-10-07 02:29:30 字數 1736 閱讀 7407

第一次寫部落格有億點點緊張

1、要求:

1.有三個執行緒,

1.1執行緒1負責把1-99之間的奇數,放入緩衝區

1.2執行緒2負責把2-100之間的偶數,放入緩衝區

1.3執行緒3負責把緩衝區的資料讀出並列印在終端

2.三個執行緒之間互斥使用緩衝區

3.執行緒1和執行緒2交替放入資料,即按照1,、2、3……的順序放入

4.執行緒3按照1,、2、3……的順序取出資料列印

5.只有當資料被執行緒3取走以後,執行緒1和執行緒2才能往緩衝區放資料

6.只有當執行緒1或執行緒2往緩衝區放入資料後,執行緒3才能取走資料

2、程式流程圖

//將2~100偶數放入緩衝區

sem_post

(&sem3);}

pthread_exit

(null);

}void

*th_fun3

(void

* args)

//列印緩衝區資料

pthread_exit

(null);

}int

main()

res =

pthread_create

(&th2,

null

,th_fun2,

"th2");

if(0!= res)

res =

pthread_create

(&th3,

null

,th_fun3,

"th3");

if(0!= res)

pthread_join

(th1,

null);

pthread_join

(th2,

null);

pthread_join

(th3,

null);

sem_destroy

(&sem1)

;sem_destroy

(&sem2)

;sem_destroy

(&sem3)

;return0;

}4、結果

C 執行緒交叉列印1 100

哈哈哈,睡醒了突然覺得昨晚的太簡單了,又想起了一道題,交叉列印1 100,雖然難度也還是只提公升了一丟丟。但是,複習一下也算嘛。include include include include using namespace std mutex data mutex condition variabl...

自用 linux下多執行緒

3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...

linux下多執行緒程式設計

先看執行的結果 1 主函式正在建立執行緒,2執行緒1被建立 3 thread1 i m thread 1th 4執行緒2被建立 5 thread2 i m thread 2nd 6 thread2 number 0 7執行緒3被建立 8主函式正在等待執行緒結束.9 thread1 number 0 ...