从C中的多个线程访问静态常量变量

时间:2010-05-17 09:33:50

标签: c++ c pthreads

我在Linux(C / C ++和POSIX线程)下有多线程编程经验,但最明显的情况有时非常复杂。

我的代码中有几个静态常量变量(全局和函数本地),我可以在不使用互斥锁的情况下从多个线程同时访问它们吗?因为我不修改它们应该没问题,但总是更好地问。

我必须进行高速优化,所以即使像互斥锁一样快速操作对我来说也是非常昂贵的,特别是因为我的应用程序将从长循环中访问这些变量。

3 个答案:

答案 0 :(得分:14)

如果只在一个线程上初始化它们然后从不修改它们,那么在没有互斥体等的情况下从多个线程同时读取它们应该没问题。

答案 1 :(得分:4)

如果您只是阅读而不修改,则不需要任何锁

答案 2 :(得分:0)

我不知道其他架构,但是intel保证所有读取都是原子的,但是,如果你想添加一些,使用类似value = atomic_add(&variable,0);的东西,这将强制所有写入然后将0添加到值然后返回旧值,不会改变