0

我正在尝试理解信号量的概念,我有以下代码。最初 Semaphore mutex 被初始化为 1

 Structure of Pi;
do{
wait(mutex);
Critical Section
signal(mutex);
Remainder section
}
while(1);

考虑到 N 个进程,上述算法能否很好地解决临界区问题?

我的观察是,前两个条件,即互斥和进步得到满足,但不是有界缓冲区。那是对的吗?

4

1 回答 1

2

如果信号量最大计数为 1,则满足互斥。如果要互斥,通常会使用锁。

进步不一定满足。这取决于信号量实现是否保证公平。在某些操作系统上,给定两个高优先级线程和一个低优先级线程,低优先级线程可能会被饿死。

有界缓冲区问题没有得到满足,但是您展示的不是生产者-消费者程序。

于 2013-11-06T04:02:59.817 回答