最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++基礎(chǔ)語法梳理:進(jìn)程與線程!知識(shí)點(diǎn)詳細(xì)梳理

2021-10-09 18:36 作者:C語言編程__Plus  | 我要投稿



進(jìn)程與線程

對(duì)于有線程系統(tǒng):

(1)進(jìn)程是資源分配的獨(dú)立單位

(2)線程是資源調(diào)度的獨(dú)立單位

對(duì)于無線程系統(tǒng):

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

進(jìn)程之間的通信方式以及優(yōu)缺點(diǎn)

管道(PIPE)

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

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

②缺點(diǎn):a、長(zhǎng)期存于系統(tǒng)中,使用不當(dāng)容易出錯(cuò);b、緩沖區(qū)有限

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

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

②缺點(diǎn):a、局限于單向通信;b、只能創(chuàng)建在它的進(jìn)程以及其有親緣關(guān)系的進(jìn)程之間;c、緩沖區(qū)有限

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

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

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

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

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

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

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

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

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

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

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

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

a、傳輸數(shù)據(jù)為字節(jié)級(jí),傳輸數(shù)據(jù)可自定義,數(shù)據(jù)量小效率高;

b、傳輸數(shù)據(jù)時(shí)間短,性能高;

c、適合于客戶端和服務(wù)器端之間信息實(shí)時(shí)交互;

d、可以加密,數(shù)據(jù)安全性強(qiáng);

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

線程之間的通信方式

鎖機(jī)制

包括互斥鎖/量(mutex)、讀寫鎖(reader-writer lock)、自旋鎖(spin lock)、條件變量(condition)

(1)互斥鎖/量(mutex):提供了以排他方式防止數(shù)據(jù)結(jié)構(gòu)被并發(fā)修改的方法。

(2)讀寫鎖(reader-writer lock):允許多個(gè)線程同時(shí)讀共享數(shù)據(jù),而對(duì)寫操作是互斥的。

(3)自旋鎖(spin lock)與互斥鎖類似,都是為了保護(hù)共享資源?;コ怄i是當(dāng)資源被占用,申請(qǐng)者進(jìn)入睡眠狀態(tài);而自旋鎖則循環(huán)檢測(cè)保持者是否已經(jīng)釋放鎖。

(4)條件變量(condition):可以以原子的方式阻塞進(jìn)程,直到某個(gè)特定條件為真為止。對(duì)條件的測(cè)試是在互斥鎖的保護(hù)下進(jìn)行的。條件變量始終與互斥鎖一起使用。

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

(1)無名線程信號(hào)量

(2)命名線程信號(hào)量

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

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

線程間的通信目的主要是用于線程同步,所以線程沒有像進(jìn)程通信中的用于數(shù)據(jù)交換的通信機(jī)制

進(jìn)程之間私有和共享的資源

私有:地址空間、堆、全局變量、棧、寄存器

共享:代碼段,公共數(shù)據(jù),進(jìn)程目錄,進(jìn)程 ID

線程之間私有和共享的資源

私有:線程棧,寄存器,程序計(jì)數(shù)器

共享:堆,地址空間,全局變量,靜態(tài)變量

多進(jìn)程與多線程間的對(duì)比、優(yōu)劣與選擇

對(duì)比


優(yōu)劣


選擇

(1)需要頻繁創(chuàng)建銷毀的優(yōu)先用線程

(2)需要進(jìn)行大量計(jì)算的優(yōu)先使用線程

(3)強(qiáng)相關(guān)的處理用線程,弱相關(guān)的處理用進(jìn)程

(4)可能要擴(kuò)展到多機(jī)分布的用進(jìn)程,多核分布的用線程

(5)都滿足需求的情況下,用你最熟悉、最拿手的方式

今天的分享就到這里了,大家要好好學(xué)C++喲~

寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

微信公眾號(hào):C語言編程學(xué)習(xí)基地

整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!



C++基礎(chǔ)語法梳理:進(jìn)程與線程!知識(shí)點(diǎn)詳細(xì)梳理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乐山市| 区。| 繁昌县| 广元市| 略阳县| 尖扎县| 屏东县| 尼木县| 美姑县| 芦山县| 津市市| 哈巴河县| 达日县| 双鸭山市| 民县| 神池县| 大田县| 苍梧县| 张家港市| 孝昌县| 遂昌县| 佛山市| 太仆寺旗| 镇康县| 正阳县| 专栏| 和平县| 乌兰浩特市| 新干县| 福州市| 平湖市| 太仆寺旗| 海盐县| 扎赉特旗| 凤阳县| 泰州市| 万全县| 福清市| 东海县| 河东区| 义乌市|