同步異步阻塞非阻塞可中斷的睡眠不可中斷的睡眠

同步:全部程序是按照必定邏輯前後順序執行的,前一個代碼沒有執行完成,後面的代碼不會執行。併發

異步:程序可能有若干分支,各自的執行時間點沒有約束,也不可提早預測。異步

阻塞:阻塞指的是一個程序在執行的時候,沒有成功獲取到相應的資源(變量/標誌/內存/數據等),那麼就一直等待在這裏循環或者睡眠等待資源能夠被獲取。這個時候咱們通常會把阻塞的進程放到等待隊列中,等待被喚醒。這個會涉及到等待隊列的知識,在本章最後會講解。函數

非阻塞:非阻塞指的是程序在獲取資源或者其餘數據的時候沒有成功,那麼直接返回錯誤碼。隊列

不可中斷的睡眠:在上面阻塞的狀況下會使用到睡眠的屬性。不可被中斷打斷進程

可中斷的睡眠:在上面阻塞的狀況下會使用到睡眠的屬性。可被中斷打斷內存

等待隊列:進程阻塞的時候,要把進程加入到等待隊列中,加入的屬性有可中斷,不可中斷等。喚醒等待隊列中的進程時,也有幾個屬性(所有喚醒/喚醒可中斷的/喚醒若干個可中斷)。其實還有一個互斥標誌,也是用來喚醒等待隊列中的進程用的屬性。至關一個進程的特殊標誌,不過通常狀況下不多使用。資源

等待隊列實現多進程併發:等待隊列可實現多進程併發:可是目前添加進程到等待隊列的內核函數的現有實現方式不支持,咱們須要本身去實現一下wait_event函數,都是使用原來wait_event函數內部的函數實現的,在邏輯上稍做修改。同步

相關文章
相關標籤/搜索