我有一个遗留 C/C++ 代码的代码库,其中包含许多访问全局静态变量的函数,因此不是线程安全的。我正在寻找有关如何转换此代码以使其线程安全的建议。我突然想到,一种方法是将静态变量转换为线程局部变量,或者将它们存储在线程局部存储中。这样做的好处是我不必重写大量使用函数向它们传递额外上下文的代码,只需重写线程不安全函数本身。但是在研究这一点时,我没有找到很多关于这是一个好主意还是坏主意的建议。我有一些具体的担忧是
- 访问基于 TLS 的数据会显着变慢吗?
- 我只是继续陷入使用全局变量的陷阱,因为“全局变量不好”,还是 TLS 抵消了 global-variables-are-bad 论点?
任何其他想法也将不胜感激。