使全局静态变量多线程安全

gil*_*sah 6 c multithreading static-variables

我在C库中有全局静态变量,它在多线程运行中生成异常.我需要以某种方式使它们安全(即,每个线程应该与这些变量的不同实例相关).任何推荐的方法?

Ale*_*lli 10

没有标准方法适用于所有C实现,但存在特定于实现的解决方案.例如,使用Microsoft的编译器(参见文档),

__declspec( thread ) int tls_i = 1;
Run Code Online (Sandbox Code Playgroud)

tls_i生活在线程本地存储(每个线程都有这个变量的自己单独的实例).使用gcc,语法是

__thread int tls_i;
Run Code Online (Sandbox Code Playgroud)

您可能还想查看关于该主题的维基百科条目.