【Linux系统编程】同步和互斥的概念
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 互斥的概念
- 03. 同步的概念
- 04. 總結(jié)
- 05. 附錄
01. 概述
現(xiàn)代操作系統(tǒng)基本都是多任務(wù)操作系統(tǒng),即同時(shí)有大量可調(diào)度實(shí)體在運(yùn)行。在多任務(wù)操作系統(tǒng)中,同時(shí)運(yùn)行的多個(gè)任務(wù)可能:
- 都需要訪問/使用同一種資源
- 多個(gè)任務(wù)之間有依賴關(guān)系,某個(gè)任務(wù)的運(yùn)行依賴于另一個(gè)任務(wù)
這兩種情形是多任務(wù)編程中遇到的最基本的問題,也是多任務(wù)編程中的核心問題,同步和互斥就是用于解決這兩個(gè)問題的。
02. 互斥的概念
互斥:是指散步在不同任務(wù)之間的若干程序片斷,當(dāng)某個(gè)任務(wù)運(yùn)行其中一個(gè)程序片段時(shí),其它任務(wù)就不能運(yùn)行它們之中的任一程序片段,只能等到該任務(wù)運(yùn)行完這個(gè)程序片段后才可以運(yùn)行。最基本的場景就是:一個(gè)公共資源同一時(shí)刻只能被一個(gè)進(jìn)程或線程使用,多個(gè)進(jìn)程或線程不能同時(shí)使用公共資源。
03. 同步的概念
同步:是指散步在不同任務(wù)之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的某種先后次序來運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。最基本的場景就是:兩個(gè)或兩個(gè)以上的進(jìn)程或線程在運(yùn)行過程中協(xié)同步調(diào),按預(yù)定的先后次序運(yùn)行。比如 A 任務(wù)的運(yùn)行依賴于 B 任務(wù)產(chǎn)生的數(shù)據(jù)。
04. 總結(jié)
總之,同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步。也就是說互斥是兩個(gè)任務(wù)之間不可以同時(shí)運(yùn)行,他們會(huì)相互排斥,必須等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同步也是不能同時(shí)運(yùn)行,但他是必須要按照某種次序來運(yùn)行相應(yīng)的線程(也是一種互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任務(wù)的運(yùn)行順序,即任務(wù)是無序的,而同步的任務(wù)之間則有順序關(guān)系。
05. 附錄
5.1 參考: 同步和互斥
總結(jié)
以上是生活随笔為你收集整理的【Linux系统编程】同步和互斥的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux系统编程】线程池
- 下一篇: 【Linux系统编程】互斥锁