2008-09-20 40 views

回答

3

你不需要测试和设置指令来获得互斥锁定,如果这就是你要求的。Dijkstra在1965年描述了我所知道的第一个互斥算法。论文的标题是“并发编程控制中的问题的解决方案”,在谷歌搜索附近的副本。原始算法完全不需要硬件的特殊支持,但在CPU中提供原子指令可显着提高性能。

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

+0

http://www.dis.uniroma1.it/~baldoni/p569-dijkstra.pdf – Chris 2008-09-20 06:38:41

0

如果你想要一个跨拱的方式来做到这一点,并正在使用gcc,那么你可以使用gcc的原子内建的:

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

调用这些将导致硬件特定机器指令为当前的构建体系结构。在那些不支持它们的地方,编译将会失败。 (我认为...)

相关问题