LINUX多執行緒程式設計之建立,等待,取消執行緒

2021-09-06 08:52:14 字數 1663 閱讀 8272

h7n9禽流感來啦,多人死亡,又感覺到了03年我在北京時的非典氣氛。

家裡菜桌上肉明顯沒了。

睡一覺起來,肚子裡再沒有肉貨,清明節學習的計畫不能停止!!!

現在進入多執行緒學習啦。

由於linux程序間的通訊占用資源蠻大的,所以設定了執行緒函式,只複製棧,其它同享。

當然,執行緒之間,也存在著同步機制啦:互斥鎖,讀寫鎖,條件變數等。。

硬體原理上還不是在作任何操作前,先檢測記憶體的相關標誌位的設定。。。。

一通百通的事兒。。。

1 [root@localhost ~]# cat pthread_cancle_exp.c 

2 #include 3 #include 4 #include 5 #include 6

void *thread_function(void *arg);

7int main(int argc, char *argv)

818 sleep(10

);19 printf("

canclling thread...\n");

20 res =pthread_cancel(a_thread);

21if(res != 0)22

26 printf("

waiting for thread to finish...\n");

27 res = pthread_join(a_thread, &thread_result);

28if(res != 0)29

33exit(exit_success);34}

3536

void *thread_function(void *arg)

3746 sleep(3

);47 printf("

thread cancel type is disable ,can't cancle this thread\n");

48for(i = 0; i < 3; i++)

4953 res =pthread_setcancelstate(pthread_cancel_enable, null);

54if (res != 0)55

59else

60 printf("

now change this cancelstate is enable.\n");

61 sleep(200

);62 pthread_exit(0

);63 }

輸出:[root@localhost ~]# ./pthread_cancle_exp

thread cancel type is disable ,can't cancle this thread

thread is running (0)...

thread is running (1)...

thread is running (2)...

now change this cancelstate is enable.

canclling thread...

waiting for thread to finish...

look到了沒?當執行緒設定為不可取消時,thread 一直在run。

而當設定為可取消時,sleep(200)明顯就沒有執行啦。。

Linux多執行緒之執行緒建立

1.函式 include intpthread create pthread t restrict thread,const pthread attr t restrict attr,void start routine void void restrict arg 引數 thread 為執行緒id...

多執行緒之建立

建立執行緒的構造方法 1.thread 分配新的 thread 物件。2.thread runnable target 分配新的 thread 物件。3.thread string name 建立乙個執行緒,並給該執行緒物件分配乙個名字。4.thread runnable target,string...

linux多執行緒程式設計之互斥鎖

執行緒的同步問題 乙個程序中的多個執行緒是共享同一段資源的,由於執行緒對資源的競爭引出了鎖。其中mutex是一種簡單的加鎖方法,這個互斥鎖只有兩種狀態,那就是上鎖和解 鎖,可以把互斥鎖看作是某種意義上的全域性變數。在某一時刻,只能有乙個執行緒取得這個互斥上的鎖,擁有上鎖狀態的執行緒可以對共享資源進行...