使用信号量解决时,谁能向我解释生产者-消费者问题?更具体地说,我无法理解当生产者代码和消费者的起伏顺序发生变化时会发生什么。
semaphore mutex = 1;
semaphore full = 0;
semaphore empty = N;
void producer (void){
{
while(true)
{
int item = produce_item();
down(&empty);
down(&mutex);
insert_item(item);
up(&mutex);
up(&full);
}
}
void consumer (void){
{
while(true)
{
down(&full);
down(&mutex);
int item = remove_item(item);
up(&mutex);
up(&empty);
consume_item(item);
}
}
是我或多或少谈论的代码。