在读取共享变量之前是否需要锁定?

时间:2017-11-17 02:55:01

标签: c linux

我对C中的多个进程/线程编程完全不熟悉,我知道如果一个进程需要修改共享变量,那么在执行此操作之前需要锁定。

如果一个进程需要读取共享变量,是否需要锁定?

2 个答案:

答案 0 :(得分:1)

如果该变量可以被另一个线程或进程更改,那么是。如果你有很多读取进程/线程,你可以考虑实现一个允许许多读者一次访问的读写锁。

根据您的具体操作,您可能还需要查看原子,因为它们不需要使用锁。

https://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Atomic-Builtins.html

答案 1 :(得分:0)

是的如果一个变量在多个进程之间共享,你需要这样做,因为它避免了Ur结果中的错误,即一个进程想要对共享变量/数据进行读/写/修改,他需要检查的是该变量是免费的或者没有,那么他需要继续。如果它是免费的,那么锁定它并对它进行处理,否则它必须等到它自由