互斥和同步 消費者 生產者 管程 訊息傳遞

2021-09-29 03:11:03 字數 920 閱讀 7527

偽**

/* program producerconsume */

moniter boundedbuffer;

char buffer[n]

;//緩衝區n個資料項

int nextin,nextout;

// 緩衝區指標

int count;

// 緩衝區資料項個數

cond notfull,notempty;

// 條件變數

// 初始化緩衝區

void

(char x)

void

take

(char x)

// main

void

producer()

}void

consume()

}void

main()

三種組合

阻塞send,阻塞receive:都被阻塞,直到訊息完成傳遞,使得程序緊密同步

無阻塞send,阻塞receive: 傳送程序繼續執行,而接受程序被阻塞直到請求訊息到達

無阻塞send,無阻塞receive

直接定址

間接定址

偽**

const

int capacity =

/*緩衝區容量*/

;message null =

"空訊息"

;int i;

void

producer()

}void

consumer()

}void

main()

生產者消費者模型 管程法

package thread 測試 生產消費者模型 利用緩衝區解決 管程法 public class pcthread 生產者 class product extends thread 生產 override public void run 消費者 class consumer extends th...

互斥量,生產者消費者

如果不需要訊號量的計數能力,有時可以使用訊號量的乙個簡化版本,稱為互斥量 mutex 互斥量僅僅適用於管理共享資源或一小段 由於互斥量在實現時既容易又有效,這使得互斥量在實現使用者空間執行緒包時非常有用。互斥量是乙個可以處於兩態之一的變數 解鎖和加鎖。這樣,只需要乙個二進位制位表示它,不過實際上,常...

執行緒 同步與互斥 消費者 生產者模型

執行緒互斥用互斥鎖,執行緒的同步則用到條件變數。條件變數是用來描述執行緒間同步的。下面以生產者 消費者為例 生產者和消費者之間存在同步與互斥的關係。生產者之間 消費者之間存在互斥的關係 include include includestatic int i 1 pthread mutex t loc...