我有一个问题非常简单。 使用全局变量实现一个简单的锁定机制。我无法找到如何防止全局变量从2个进程/线程访问。
执行时我得到了公平的结果,但这是正确的。 如果2个指令不是原子的,那么我对某些架构有疑问,那么如何避免一次访问全局变量。
请给我一些基本的想法。
答案 0 :(得分:3)
使用原子方法来操纵全局变量。
原子操作是内置的'到 gcc 。虽然它们通常不是“便携式”,但大多数编译器都提供原子操作。
对于GCC,您可以实现以下内容:
if(__sync_bool_compare_and_swap(&g, g, g+1))
/* Changed by you. */;
else
/* Another process changed it before you could. Perhaps try again. */