【发布时间】:2014-09-12 11:47:41
【问题描述】:
我正在查看进程同步并遇到了测试和设置指令
boolean testAndSet (boolean *target)
{
boolean rv = *target;
*target = true;
return rv;
}
main()
{
do
{
while( testAndSet( &lock ));
//critical section
lock = false;
//remainder section
}while(true);
}
它以原子方式执行(即,每当发生对 testAndSet 的函数调用时,在函数返回之前都不会处理中断)。
现在我明白了这是如何消除互斥的(因为如果另一个进程正在执行它的关键部分,则等待进程会卡在 while 循环中)。但它如何满足 Progress 条件,更重要的是,它如何不满足有界缓冲条件?任何帮助将不胜感激..
【问题讨论】:
标签: process operating-system data-synchronization