【多線程】線程和進程

首先不要太過糾結(jié)于線程和進程,因為對于linux操作系統(tǒng)而言,進程和線程的最大的區(qū)別就是對資源共享
http://lkml.iu.edu/hypermail/linux/kernel/9608/0191.html

一. 如何區(qū)分

我們可以通過兩個方面:

  1. 調(diào)度、執(zhí)行的基本單位:每個進程都有自己的運行狀態(tài)(state)、優(yōu)先級、寄存器等,是OS調(diào)度的基本單位。
  2. 資源所有權(quán):包括程序(program text)、數(shù)據(jù)(data )、文件(open file)等資源。一個進程擁有對這些資源的所有權(quán),OS則提供保護功能,避免不同進程之間的資源沖突。

傳統(tǒng)上我們認為,線程是最小的調(diào)度單元,而進程是最小的資源分配單元!

即:

  1. 進程是資源的容器,必須包含一個或多個線程。
  2. 內(nèi)核調(diào)度的基本單位是線程、而非進程。
  3. 同一進程下的各個線程共享部分資源,但線程間私有棧等不共享

這樣的好處是:
1. 創(chuàng)建、銷毀、切換(看操作系統(tǒng))的thread比process快很多
2. 由于共享地址空間,線程通信比進程通信高效得多

二.如何選擇(從邏輯概念上理解,不談具體的操作系統(tǒng))

多進程:
優(yōu)點:不互相影響,更安全
缺點:數(shù)據(jù)不共享,進程通訊較為麻煩,創(chuàng)建慢(網(wǎng)上查的,未能親自驗證)

多線程:
優(yōu)點:創(chuàng)建速度快,數(shù)據(jù)共享
缺點:線程間相互影響,需要同步鎖等操作

簡而言之:
對于java而言,你基本不用考慮,果斷用多線程吧!(哈哈)

三.問題

1.一個進程產(chǎn)生的線程可以跑在多個核上嗎?

類似的問題還有 java線程可以在運行在多個cpu核上嗎?
這類問題,歸根結(jié)底,其實想問的是,操作系統(tǒng)的調(diào)度面對線程還是進程!

這里我們可以明確 操作系統(tǒng)的調(diào)度是面對線程(概念上)!
但是有個前提,這個線程被放到操作系統(tǒng)調(diào)度器上

這里我們必須知道操作系統(tǒng)把線程分成兩類:用戶線程和內(nèi)存線程
簡單說下二者應(yīng)用上的區(qū)別:
用戶線程:創(chuàng)建快,無法被打斷,無法利用多核并行,即同一進程下的各個用戶級線程無法同時運行在多個cpu上(因為內(nèi)核根本不知道有用戶線程這東西)
內(nèi)核線程:創(chuàng)建慢,可以被打斷,可以利用多核并行,是操作系統(tǒng)最小的調(diào)度單位

所以我們可以得出結(jié)論:如果創(chuàng)建的是內(nèi)核線程,那么理論上可以利用多核并行,但是如果是用戶線程,那么只能并發(fā)!

2.linux的線程和進程

//TODO,等有時間看完操作系統(tǒng)在回過頭來學習linux系統(tǒng)的時候再說

參考:(不分先后)

非常詳細,張林昊的答案
進程和線程的開銷
線程分類

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 又來到了一個老生常談的問題,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學習操作系統(tǒng)呢? 今天就這個問題開始,來談?wù)劜?..
    tangsl閱讀 4,317評論 0 23
  • 操作系統(tǒng)概論 操作系統(tǒng)的概念 操作系統(tǒng)是指控制和管理計算機的軟硬件資源,并合理的組織調(diào)度計算機的工作和資源的分配,...
    野狗子嗷嗷嗷閱讀 12,456評論 3 34
  • 隨著年齡的增長, 我們的嘴角已不在堅強。 往往只是一句話, 就會讓我們熱淚盈眶。 一閃而過的一個念頭, 也會讓我們...
    琢玉書生閱讀 223評論 5 3
  • 使用npm管理node的包,可以使用npm update <name>對單個包升級,對于npm的版本大于 2.6....
    0xSen閱讀 35,856評論 1 19
  • 先認識其對立物。你必須先成為非,然后才能成為是。如果你認為,你是光,你必須讓自己處身黑暗之中。如果你要成為黑暗中的...
    王澤華wzh閱讀 393評論 0 0

友情鏈接更多精彩內(nèi)容