私はオペレーティングシステムを自習しています。 Tanenbaumの著書では、3つのセマフォー(どれがmutexであるか)がproducer-comsumerプロセスのペアをどのように調整しているかを説明しています。私はそれをつかむのに苦労している。どのように達成されているか説明してください。どんな助けもありがとう。ありがとう。ミューテックスとセマフォとのプロセス間同期
#define N 1 00
typedef int semaphore;
semaphore mutex = 1 ;
semaphore empty = N;
semaphore full = 0;
void producer(void)
{
int item;
while (TRUE) {
item = produce_item();
down(&empty);
down(&mutex);
inserUtem(item);
up(&mutex);
up(&full);
}
void consumer(void)
{
int item;
while (TRUE) {
down(&full);
down(&mutex);
item = remove_ item();
up(&mutex);
up(&empty);
consume_item(item);
}
あなたのOSが偽の起床をサポートしている場合は、whileループ全体を追加する必要があるかもしれません。幸運にも、OSの唯一の人気クラスは疑似ウェークアップをサポートしています:) –
ありがとう! – yukon
そのWindowsですか?また、もう1つの説明..完全に空の代わりに適切に処理された(つまり、条件付きの)ポインタをスタックできますか? – yukon