鉴于《操作系统:一书》中第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;
}
}