日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux之多线程(1)

發(fā)布時間:2023/11/30 linux 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux之多线程(1) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們之前講了進程,今天我們重新認識另外一個概念---線程。我們首先會想到的是進程和線程有什么區(qū)別和聯(lián)系,對吧?進程是由程序執(zhí)行起來,跑在操作系統(tǒng)的,是系統(tǒng)進行資源分配和調(diào)度的基本單位。進程具有資源獨占性,進程是只有通過進程間通信才能進入臨界區(qū)享受臨界資源,訪問同一塊地址空間。而線程是什么呢?線程最大的特點就是資源共享,在同一個進程中,各個線程之間資源是共享的。說到這里,我就舉一個現(xiàn)實生活中最普遍的例子吧~~

大家無時無刻不在用qq吧!(可能說的有點夸張,但是還好還好)當你在計算機上運行qq這個進程時,可能會同時有多個好友給你發(fā)送消息,然而你也可以同時接收到那些消息,我們就可以把多個好友發(fā)送消息稱為多個線程。當然進程就是qq啊,微信啊,在計算機上運行的稱為多個進程。

線程和進程類似,也有創(chuàng)建線程,線程終止,線程等待。

1、創(chuàng)建線程


創(chuàng)建進程例子:


運行結果:


結果中輸出main pthread run!說明主線程創(chuàng)建成功。

2、線程終止

在進程終止時,我們直接用exit就可以使進程退出。在這里,線程終止可以用exit嗎?看一下這個例子:


運行結果:


看看這個結果,顯然當你要退出子線程的時候,若用exit,會使整個進程都終止,但是我們并不想讓它的主線程也終止。

下面就來介紹一下線程終止的幾種方式:

①退出線程,需要從線程中return,則該線程退出;

②退出線程,可以用pthread_exit,終止該線程;

③用pthread_cancel取消該線程。

我們一一作以講解吧~


運行結果:


用return返回子線程可以達到預期的效果,而且不影響主線程的運行;在這里子線程退出后,主線程每隔三秒打一次。


運行結果:


這個例子通過pthread_exit也可以使子進程終止。


運行結果:


在這里,thread線程被別的線程調(diào)用pthread_cancel異常終止掉。


★那么線程間是如何通信的呢?

我們可以設置一個全局變量。

比如:


運行結果:


這個程序執(zhí)行的功能是使主線程和子線程交替運行,讓主線程sleep三秒,子線程sleep一秒;這里還說明了一個問題,用一個全局變量來使線程通信,共享同一份資源,當子線程中的count改變的時候主線程中的count也隨之改變。


這是線程的一部分哦,,在下次寫線程(2)的時候再介紹其他內(nèi)容吧~~

總結

以上是生活随笔為你收集整理的linux之多线程(1)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。