Linux系統程式設計 執行緒建立等待及退出2

2021-10-16 12:52:31 字數 2686 閱讀 8342

實現如下:

.執行緒同步之互斥量加鎖解鎖和互斥鎖限制共享資源的訪問

案例:

#include

#include

int g_data=0;

pthread_mutex_t mutex;

void

*func1

(void

*arg)}}

void

*func2

(void

*arg)

}int

main()

ret2=

pthread_create

(&t2,

null

,func2,

(void*)

¶m);if

(ret ==0)

while(1

)pthread_join

(t1,

null);

pthread_join

(t2,

null);

pthread_mutex_destroy

(&mutex)

;return0;

}

clc@embed_learn:

~/lianxi4$ vi demo15.c

clc@embed_learn:

~/lianxi4$ .

/a.out

main:creat t1 success

main:creat t2 success

main:

0t1:

140103516976896 thread is creat

t1:parm is 100

t1:0

t2:140103508584192 thread is creat

t2:parm is 100

t2:1

t1:1

main:

2t1:

2main:3==

====

====

====

====

====

====

====

====

====

====

====

main:

3t2:

4main:

4t2:

5main:

5

保證g_data=3時,執行緒t1退出

死鎖:執行緒條件控制實現執行緒的同步

#include

#include

#include

int g_data=0;

pthread_mutex_t mutex;

pthread_cond_t cond;

void

*func1

(void

*arg)}}

void

*func2

(void

*arg)

pthread_mutex_unlock

(&mutex)

;sleep(1

);}}

intmain()

ret2=

pthread_create

(&t2,

null

,func2,

(void*)

¶m);// if(ret == 0)

pthread_join

(t1,

null);

pthread_join

(t2,

null);

pthread_mutex_destroy

(&mutex)

;pthread_cond_destroy

(&cond)

;return0;

}

執行結果:

clc@embed_learn:

~/lianxi4$ .

/demo16

t1:139871513495296 thread is creat

t1:parm is 100

t2:139871505102592 thread is creat

t2:parm is 100

t2:0

t2:1

t2:2

t1:run==

====

====

====

==t1:

3t2:

0t2:

1t2:

2t1:run==

====

====

====

==t1:

3

測試檔案test.c

int

main

(int argc,

char

**ar**)

}~

執行命令:

clc@embed_learn:

~/lianxi4$ .

/a.out 10

>>test.ret.txt &[3

]4230

結束之後可以開啟檢視執行除錯結果:

clc@embed_learn:

~/lianxi4$ vi test.ret.txt

linux系統程式設計 執行緒

include int pthread create pthread t thread,const pthread attr t attr,void start routine void void arg include include include include include include...

《Linux系統程式設計 執行緒池》

在傳統伺服器結構中,常是有乙個總的監聽執行緒監聽有沒有新的使用者連線伺服器,每當有乙個新的使用者進入,伺服器就開啟乙個新的執行緒使用者處理這 個使用者的資料報。這個執行緒只服務於這個使用者,當使用者與伺服器端關閉連線以後,伺服器端銷毀這個執行緒。然而頻繁地開闢與銷毀執行緒極大地占用了系統的資源,而且...

Linux系統程式設計 執行緒基礎

執行緒的概念 執行緒是程序內部的一條執行序列,或者執行流。每個程序至少有一條執行緒,稱之為主線程。從 的角度看,就是main函式的函式體。在主線程中可以通過執行緒庫建立其他函式執行緒。在同乙個程序中的執行緒都是併發執行的,並且執行緒的執行順序由系統決定。主線程和函式執行緒沒有本質的區別,只是主線程是...