{eval=Array;=+count(Array);}
舉個例子 有一千塊磚要卸貨,
單線程就是一個人干活。卸得慢
雙線程就是兩個人干活。卸貨時間快了一倍
四線程就是4個人卸貨。卸貨時間快了4倍
進程是同時進行,跟cpu核數(shù)有關(guān)系,線程是在同一個時間段輪流交替執(zhí)行任務(wù),可能線程A執(zhí)行了一半卡住了,這時候線程B繼續(xù)執(zhí)行
1.概念
進程:運行中的程序。 線程:一個程序中的多個執(zhí)行路徑。更準(zhǔn)確的定義是:線程是一個進程內(nèi)部的一個控制序列。
2.為什么要有線程?
用fork調(diào)用進程代價太高,需要讓一個進程同時做多件事情,線程就非常有用。
3.線程的優(yōu)點和缺點。
優(yōu)點:
(1)有時,讓程序看起來是在同時做兩件事是非常有用的。 比如在編輯文檔時,還能統(tǒng)計文檔里的單詞個數(shù)。
(2)一個混雜著輸入、計算、輸出的程序,利用線程可以將這3個部 分分成3個線程來執(zhí)行,從而改變程序執(zhí)行的性能。
(3)一般來說,線程之間切換需要操作系統(tǒng)所做的工作比進程間切換需要的代價小。
缺點:
(1)編寫線程需要非常仔細的設(shè)計。
(2)對多線程的調(diào)試?yán)щy程度比單線程調(diào)試大得多。
4.創(chuàng)建線程
Linux系統(tǒng)支持POSIX多線程接口,稱為pthread。
編寫linux下的多線程程序,需要包含頭文件pthread.h,鏈接時需要使用庫libpthread.a。
如果在主線程里面創(chuàng)建線程,程序就會在創(chuàng)建線程的地方產(chǎn)生分支,變成兩個部分執(zhí)行。線程的創(chuàng)建通過函數(shù)pthread_create來完成。成功返回0。
一個簡單的創(chuàng)建多線程的程序:
輸出結(jié)果
以上就是Linux 多線程的實例詳解,感謝閱讀,希望能幫助到大家!
例如程序的執(zhí)行都是從main進程開始,如果在main創(chuàng)建多線程,比如線程1 2 3,那么CPU就會并發(fā)運行線程1 2 3 以及main ,互不影響
Linux的線程是通過輕量化線程實現(xiàn)的,其實和普通進程沒有本質(zhì)的區(qū)別,但是線程之間的可以訪問彼此的一些數(shù)據(jù)、段和文件等等。
輕量化進程是Linux用來解決單純進程切換開銷太大的問題,通過創(chuàng)建線程組的方式來將屬于同一個進程的不同線程放在一起,實現(xiàn)部分?jǐn)?shù)據(jù)共享,調(diào)度和通信在線程組里面都會非常方便和快速。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答