私はセマフォを使用してプロデューサのコンシューマの問題に対する解決策を実装しており、これまでにプロデューサとコンシューマを実装したこのコードを開発しました。プロデューサ/コンシューマソリューション
#define N 100
typedef int semaphore;
semaphore mutex = 1;
semaphore empty = N;
semaphore full = 0;
void producer(void)
{
int item;
while (TRUE)
{
produce_item(&item);
down(&empty);
down(&mutex);
enter_item(item);
up(&mutex);
up(&full);
}
}
void consumer(void)
{
int item;
while (TRUE)
{
down(&full);
down(&mutex);
remove_item(&item);
up(&mutex);
up(&empty);
consume_item(item);
}
}
アイテムを作成/使用するたびに番号を印刷するメインを実装する方法を考えるのは苦労しています。
すべてのヘルプは、私がenter_item
とremove_item
を呼び出した後、メッセージを印刷示唆
コードをインデントしてください – user8
いくつかのプロデューサスレッドを起動してください(何らかのポインタの待ち行列/何でもスリープコールをループするかもしれません) 。 –