可以在没有硬件支持的软件中实现测试和设置吗?

前端之家收集整理的这篇文章主要介绍了可以在没有硬件支持的软件中实现测试和设置吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是用软件编写的测试和设置:
  1. boolean TestAndSet(boolean *target) {
  2. boolean rv = *target;
  3. *target = TRUE;
  4. return rv;
  5. }

  1. do {
  2. while(TestAndSetLock(&lock))
  3. ; // do nothing
  4. // critical section
  5. lock = FALSE;
  6. // remainder section
  7. } while(TRUE);

我们可以在cpu中使用不支持硬件级别的测试和设置的机制吗?如果是这样,原子性如何得到保证?

解决方法

您可以在没有TAS / CAS的机器上使用Lamport的“面包店”互斥算法来访问“原子”(受保护)值.

http://www.disi.unige.it/person/DelzannoG/SO1/AA0607/bakery.htm

如果你没有合理限制的’N’过程,它只会变得复杂.

猜你在找的C&C++相关文章