📜  门|门 CS 1999 |第 68 题

📅  最后修改于: 2021-09-27 05:28:32             🧑  作者: Mango

【5分题】

一种。某个处理器提供了一个“测试和设置”指令,其用法如下:

TEST register, flag

该指令原子地将标志复制到寄存器并将标志设置为 1。提供伪代码以使用该指令将进入和退出代码实现到临界区。

湾考虑以下使用大小为 1 的缓冲区解决生产者-消费者问题的解决方案。假设 count 的初始值为 0。还假设对 count 的测试和对 count 的赋值是原子操作。

Producer:      
   Repeat 
       Produce an item;
       if count = 1 then sleep;
       place item in buffer.
       count = 1;
       Wakeup(Consumer);
  Forever 

Consumer:
  Repeat
      if count = 0 then sleep;
      Remove item from buffer;
      count = 0;
      Wakeup(Producer);
      Consume item;
  Forever;

表明在此解决方案中,两个进程可能同时处于休眠状态。回答:
解释:
这个问题的测验
如果您发现上面的帖子有任何错误,请在下面评论