CSAPP第十二章讀書筆記

這一章講了並行的三種機制:

[1]基於進程的並行:

這裏寫圖片描述

[2]基於I/O多路複用的並行:

基本思路是使用select函數,使得內核掛起進程,只有某一個I/O或者多個I/O事件發生之後,纔會將內核返回給應用程序。

這裏寫圖片描述

[3]基於線程的並行:

這裏寫圖片描述

在這裏還引入了信號量和鎖的機制,我們利用信號量進行對共享資源的保護:互斥。還可以利用信號量來調度共享資源,比如消費者,生產者,讀-寫這種模型。

利用緩衝區,我們可以將一個web服務器設計成生產者,消費者模型。其中主線程負責接受客戶端的請求並且生成套結字,然後提前生成的各個線程則作爲消費者等待着可能的套結字出現,一旦出現就取出來並且進行服務。這種模型避免了過多的線程,但是也達到了並行的目的。

[4]線程不安全的四種情況,主要有沒有對共享變量加鎖,跨越多個調用狀態,調用了別的縣城不安全的函數,返回靜態變量指針。

[5]死鎖,這是一個很麻煩的問題,因爲競爭導致的死衚衕。每一個線程都在等一個永遠不可能出現的V操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章