【发布时间】:2014-06-02 18:12:23
【问题描述】:
我有一个非常简单的问题。 在使用全局变量实现一个简单的锁定机制时。我不知道如何防止从 2 个进程/线程访问全局变量。
我的算法(采取2个过程)
- 进程 p1 检查是否设置了变量 g,然后不要修改代码。
- 如果未设置则设置然后修改代码。
- 流程 2 相同。
执行时我得到了公平的结果,但它是否正确。 如果 2 条指令不是原子的,那么我对某些架构的怀疑,那么如何避免一次访问全局变量。
请给我一些基本的想法。
【问题讨论】:
-
你问的是进程还是线程?进程不共享全局变量。线程可以。下一个重要的事情是你如何检查。一个简单的
if语句可能会以原子方式执行,更有可能不会,并且您可能会受到编译器或处理器重新排序的影响。 -
您不使用互斥锁是否有原因?
-
好的,我的观点是进程 (IPC) 或类似的东西都可以访问的东西。知道这些东西。没有别的。
标签: c multithreading locking