偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

進(jìn)程與線程,你了解多少?

開(kāi)發(fā) 前端
在面試中經(jīng)常會(huì)被問(wèn)到進(jìn)程與線程,或者實(shí)際開(kāi)發(fā)中經(jīng)常遇到。那什么是進(jìn)程?什么是線程?你對(duì)他們了解有多少?

進(jìn)程與線程,在面試中經(jīng)常會(huì)被問(wèn)到,或者實(shí)際開(kāi)發(fā)中經(jīng)常遇到。那什么是進(jìn)程?什么是線程?你對(duì)他們了解有多少?

我們經(jīng)常會(huì)說(shuō):

1、一個(gè)在內(nèi)存中運(yùn)行的應(yīng)用程序。每個(gè)進(jìn)程都有自己獨(dú)立的一塊內(nèi)存空間,一個(gè)進(jìn)程可以有多個(gè)線程。

2、進(jìn)程是資源分配的獨(dú)立單位,線程是資源調(diào)度的獨(dú)立單位。

進(jìn)程。下圖顯示了 4 個(gè)程序創(chuàng)建了 4 個(gè)進(jìn)程,這 4 個(gè)進(jìn)程可以并發(fā)地執(zhí)行。

圖片

線程。QQ 和瀏覽器是兩個(gè)進(jìn)程,瀏覽器進(jìn)程里面有很多線程,例如 HTTP 請(qǐng)求線程、事件響應(yīng)線程、渲染線程等等,線程的并發(fā)執(zhí)行使得在瀏覽器中點(diǎn)擊一個(gè)新鏈接從而發(fā)起 HTTP 請(qǐng)求時(shí),瀏覽器還可以響應(yīng)用戶的其它事件。

如果僅僅回答到這里,可能一個(gè)大學(xué)畢業(yè)生就能這么回答,那我們是不是需要深入一下,再深入一下。

比如說(shuō):

1、資源開(kāi)銷方面。線程和進(jìn)程的切換的資源開(kāi)銷情況怎么樣?

2、內(nèi)存分配方面。進(jìn)程/線程的內(nèi)存分配情況怎么樣?

3、影響程度方面。進(jìn)程/線程奔潰會(huì)造成什么樣的影響?

4、執(zhí)行過(guò)程方面。進(jìn)程/線程執(zhí)行過(guò)程是什么樣的?

5、我們沒(méi)有說(shuō)進(jìn)程之間是否可以通信?線程之間是否可以通信?如何可以通信的話,他們是怎么進(jìn)行通信的?

6、進(jìn)程同步又是什么?

一、資源開(kāi)銷

(1)每一個(gè)進(jìn)程都有獨(dú)立的代碼和內(nèi)存空間,多個(gè)進(jìn)程相互切換會(huì)消耗比較大的資源。

進(jìn)程切換如下圖:

圖片

說(shuō)明:

  • 就緒狀態(tài)(ready):等待被調(diào)度
  • 運(yùn)行狀態(tài)(running)
  • 阻塞狀態(tài)(waiting):等待資源

如果再往下說(shuō)的話需要聊聊進(jìn)程調(diào)度算法,比如:先來(lái)先服務(wù)(FCFS),短作業(yè)優(yōu)先(SJF),最短剩余時(shí)間優(yōu)先,時(shí)間片輪轉(zhuǎn),優(yōu)先級(jí)調(diào)度,多級(jí)反饋隊(duì)列等等。

(2)同一類線程共享代碼和內(nèi)存空間,每一個(gè)線程都有獨(dú)立的運(yùn)行棧和程序計(jì)數(shù)器,多個(gè)線程相互切換消耗比較小。

二、內(nèi)存分配

(1)進(jìn)程之間的地址空間和資源是相互獨(dú)立的。

(2)同一進(jìn)程的線程共享本進(jìn)程的地址空間和資源。

三、影響程度

(1)進(jìn)程一旦奔潰,只會(huì)影響到該進(jìn)程的程序奔潰,其他進(jìn)程不受影響。

(2)線程一旦奔潰,會(huì)影響到使用該線程的進(jìn)程都會(huì)受到影響。

(3)進(jìn)程要比線程要健壯。

四、執(zhí)行過(guò)程

(1)每一個(gè)進(jìn)程都有獨(dú)立的運(yùn)行入口,執(zhí)行順序,程序的出口,提供線程控制,進(jìn)程可以并發(fā)執(zhí)行。

(2)線程不能單獨(dú)運(yùn)行,必須依賴于進(jìn)程中執(zhí)行。線程可以并發(fā)執(zhí)行。

五、進(jìn)程之間的通信

(1)管道(PIPE)

有名管道:一種半雙工的通信方式,它允許無(wú)親緣關(guān)系進(jìn)程間的通信。

優(yōu)點(diǎn):可以實(shí)現(xiàn)任意關(guān)系的進(jìn)程間的通信

缺點(diǎn):

  1. 長(zhǎng)期存于系統(tǒng)中,使用不當(dāng)容易出錯(cuò)。
  2. 緩沖區(qū)有限。

無(wú)名管道:一種半雙工的通信方式,只能在具有親緣關(guān)系的進(jìn)程間使用(父子進(jìn)程)。

優(yōu)點(diǎn):簡(jiǎn)單方便。

缺點(diǎn):

  1. 局限于單向通信。
  2. 只能創(chuàng)建在它的進(jìn)程以及其有親緣關(guān)系的進(jìn)程之間。
  3. 緩沖區(qū)有限。

(2)信號(hào)量(Semaphore):一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)線程對(duì)共享資源的訪問(wèn)。

優(yōu)點(diǎn):可以同步進(jìn)程。

缺點(diǎn):信號(hào)量有限。

(3)信號(hào)(Signal):一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。

(4)消息隊(duì)列(Message Queue):是消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。

優(yōu)點(diǎn):可以實(shí)現(xiàn)任意進(jìn)程間的通信,并通過(guò)系統(tǒng)調(diào)用函數(shù)來(lái)實(shí)現(xiàn)消息發(fā)送和接收之間的同步,無(wú)需考慮同步問(wèn)題,方便。

缺點(diǎn):信息的復(fù)制需要額外消耗 CPU 的時(shí)間,不適宜于信息量大或操作頻繁的場(chǎng)合。

(5)共享內(nèi)存(Shared Memory):映射一段能被其他進(jìn)程所訪問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問(wèn)。

優(yōu)點(diǎn):無(wú)須復(fù)制,快捷,信息量大。

缺點(diǎn):1.通信是通過(guò)將共享空間緩沖區(qū)直接附加到進(jìn)程的虛擬地址空間中來(lái)實(shí)現(xiàn)的,因此進(jìn)程間的讀寫(xiě)操作的同步問(wèn)題2.利用內(nèi)存緩沖區(qū)直接交換信息,內(nèi)存的實(shí)體存在于計(jì)算機(jī)中,只能同一個(gè)計(jì)算機(jī)系統(tǒng)中的諸多進(jìn)程共享,不方便網(wǎng)絡(luò)通信。

(6)套接字(Socket):可用于不同計(jì)算機(jī)間的進(jìn)程通信

優(yōu)點(diǎn):

  1. 傳輸數(shù)據(jù)為字節(jié)級(jí),傳輸數(shù)據(jù)可自定義,數(shù)據(jù)量小效率高。
  2. 傳輸數(shù)據(jù)時(shí)間短,性能高。
  3. 適合于客戶端和服務(wù)器端之間信息實(shí)時(shí)交互。
  4. 可以加密,數(shù)據(jù)安全性強(qiáng)。

缺點(diǎn):需對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行解析,轉(zhuǎn)化成應(yīng)用級(jí)的數(shù)據(jù)。

六、線程之間的通信

(1)鎖機(jī)制:包括互斥鎖/量(mutex)、讀寫(xiě)鎖(reader-writer lock)、自旋鎖(spin lock)、條件變量(condition)。

  • 互斥鎖/量(mutex):提供了以排他方式防止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法。
  • 讀寫(xiě)鎖(reader-writer lock):允許多個(gè)線程同時(shí)讀共享數(shù)據(jù),而對(duì)寫(xiě)操作是互斥的。
  • 自旋鎖(spin lock)與互斥鎖類似,都是為了保護(hù)共享資源?;コ怄i是當(dāng)資源被占用,申請(qǐng)者進(jìn)入睡眠狀態(tài);而自旋鎖則循環(huán)檢測(cè)保持者是否已經(jīng)釋放鎖。
  • 條件變量(condition):可以以原子的方式阻塞進(jìn)程,直到某個(gè)特定條件為真為止。對(duì)條件的測(cè)試是在互斥鎖的保護(hù)下進(jìn)行的。條件變量始終與互斥鎖一起使用。

(2)信號(hào)量機(jī)制(Semaphore)。

  • 無(wú)名線程信號(hào)量
  • 命名線程信號(hào)量

(3)信號(hào)機(jī)制(Signal):類似進(jìn)程間的信號(hào)處理。

(4)屏障(barrier):屏障允許每個(gè)線程等待,直到所有的合作線程都達(dá)到某一點(diǎn),然后從該點(diǎn)繼續(xù)執(zhí)行。

七、對(duì)比/優(yōu)劣/選擇

圖片

圖片

選擇

  • 需要頻繁創(chuàng)建銷毀的優(yōu)先用線程。
  • 需要進(jìn)行大量計(jì)算的優(yōu)先使用線程。
  • 強(qiáng)相關(guān)的處理用線程,弱相關(guān)的處理用進(jìn)程。
  • 可能要擴(kuò)展到多機(jī)分布的用進(jìn)程,多核分布的用線程。
  • 都滿足需求的情況下,用你最熟悉、最拿手的方式就對(duì)了?。
責(zé)任編輯:姜華 來(lái)源: 松寶寫(xiě)代碼
相關(guān)推薦

2023-02-24 14:46:32

Java線程池編程

2020-03-25 08:47:22

智能邊緣邊緣計(jì)算網(wǎng)絡(luò)

2023-10-25 08:17:06

Lite模式代理類

2023-10-29 08:35:47

AndroidAOP編程

2012-12-27 10:58:24

KVMKVM概念

2021-06-06 18:22:04

PprofGopher邏輯

2023-09-07 10:26:50

接口測(cè)試自動(dòng)化測(cè)試

2022-02-08 12:06:12

云計(jì)算

2019-08-07 17:18:18

云計(jì)算云原生函數(shù)

2011-08-23 11:03:35

ATM

2025-01-16 10:41:40

2020-12-10 09:00:00

開(kāi)發(fā).NET工具

2015-11-09 10:44:37

DevOpsIT運(yùn)維

2023-12-24 12:56:36

協(xié)程

2021-12-09 07:47:58

Flink 提交模式

2023-08-17 10:12:04

前端整潔架構(gòu)

2011-08-10 09:35:38

2021-09-07 18:34:14

混合云架構(gòu)私有云云計(jì)算

2017-05-26 18:30:34

華為

2021-08-11 10:00:51

緩存MyBatis管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)