我如何指示TestandSet()中的条目部分和退出部分

时间:2016-11-03 21:35:38

标签: critical-section

TestandSet()是一个原子操作如下:

boolean TestandSet(boolean *target)
{ 
    boolean prev = *target;
    *target = true; // always set true
    return prev; // return previous value
}

TestandSet()可用于实现互斥,如下所示:

do {
 while (TestandSet(&lock))
   ; /* loop and wait */
   // critical section
   lock = false;
    // remainder section
}

Q1:我如何在上面的代码中指出输入部分和退出部分

Q2问题是假设有两个进程P1和P2执行上述代码,P1稍微超前于P2。假设锁定被启动为false。根据下表,给出P1和P2的执行痕迹。

The following table

0 个答案:

没有答案