关于管程的问题
刚刚看了一些有关管程的问题,有些地方不是很明白
就如生产消费的问题
void append(char x)
{
while(count==N) //原为if
cwait(notfull)
buffer[nextin]=x;
nextin=(nextin+1)%N;
count++;
cnotify(notempty);
}
void take(char x)
{
while(count==0) //原为if
cwait(notempty)
x=buffer[nextout];
nextout=(nextout+1)%N;
count--;
cnotify(notfull);
}
书中解释道:
if语句被while循环取代,因此,这个方案导致对条件变量至少多一次格外的测试……
何谓“多一次”格外测试?
小弟不明白 谁可以解释???