★生產者-消費者模型ide
首先,咱們先分析一下生產者與消費者模型:生產者與消費者是模型中不可缺乏的2種角色,固然模型中確定須要一個保存數據的場所,可以將生產者生產的數據進行存儲。同時,模型必需要知足生產者產生出數據後,消費者纔可以進行使用,即就是消費者必須位於生產者以後,固然生產者生產的數據最多將場所放置滿就不能繼續生產,下面有簡單的圖示:spa
固然,若是有多個消費者和多個生產者,生產者與消費者之間的關係是同步的,生產者與生產者之間是互斥的,由於一塊空間不能讓多個生產者同時進行生產。消費者和消費者之間也是互斥的,也就保證了不能同時進行一塊空間中數據的消費。3d
生產者是否可以生產取決於還有多少空間,而消費者是否可以消費取決於有多少個數據,生產者開始時有空間,而沒有產生數據,因此生產者確定居於消費者以前。blog
例:下面是具體的實現生產者-消費者模型,其中使用鏈表來存儲生產的數據,生產的數據頭插入鏈表,消費者的消費數據進行頭刪。ci
運行結果:資源
★讀、寫者模型get
讀、寫者模型與生產者消費者模型相似,可是也要不一樣的地方,多個讀者能夠共享一塊空間中的數據,寫者之間是相互斥的,讀者和寫者之間是互斥的。同步
讀寫鎖:也稱自旋鎖,一個讀寫鎖容許有多個讀者進行資源的讀取,可是隻可以容許一個寫者對數據進行操做。it
例:io
運行結果: