-1

我发现的大多数实现都需要硬件指令来执行此操作。但是我强烈怀疑这是必需的(如果是,我不知道为什么......)

4

2 回答 2

3

如果这就是您所要求的,您不需要测试和设置指令来获得互斥锁定。Dijkstra 在 1965 年描述了我所知道的第一个互斥算法。论文的标题是“Solution of a problem in concurrent programming control”,在 Google 上搜索附近的副本。原始算法根本不需要硬件的特殊支持,但在 CPU 中提供原子指令可显着提高性能。

测试和设置、原子交换和加载链接 + 条件存储都是 CPU 提供的常见原语。所有都可以用来实现互斥,然后可以用来实现你想要的任何锁定语义。

于 2008-09-20T05:26:45.730 回答
0

如果你想要一种跨架构的方式,并且正在使用 gcc,那么你可以使用 gcc 的 atomic builtins:

http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html

调用这些将导致当前构建架构的硬件特定机器指令。在那些不支持它们的情况下,编译将失败。(我认为...)

于 2008-09-20T06:27:49.437 回答