使用Test和Set(&lock-> flag,1)更改锁的实现

时间:2019-03-09 06:54:31

标签: operating-system locks

鉴于《操作系统:一书》中第8页的锁的实现,其中第三个简单的部分(http://pages.cs.wisc.edu/~remzi/OSTEP/threads-locks.pdf)在第8页中使用Test和Set(&lock-> flag,1)执行的原子操作来获取锁(实现在第6页中给出),相反,如果我使用此功能实现了锁定功能,将会出问题

void lock(lock_t *lock)
{
    while(1)
    {
      while(lock->flag==1)
      ;
      if(test_and_set(&lock->flag,1)==0)
        return;
    }
}

0 个答案:

没有答案