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

Goo*_*ofy 4 c c++ pthreads

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

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

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

小智 14

如果你只在一个线程上初始化它们然后再也不修改它们,那么可以在没有互斥体等的情况下从多个线程同时读取它们.

  • +1,如果答案不够明显:对具有常量静态变量的函数的第一次调用不是线程安全的. (5认同)

And*_*nck 5

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