C ++ 11 thread_local和"无法使用静态TLS加载任何对象"

时间:2018-02-01 16:28:31

标签: c++ multithreading cross-platform thread-local-storage

我遇到了一个不太好的旧错误

not loaded: /usr/lib/mozilla/plugins/libfreshwrapper-flashplayer.so because "Cannot load library /usr/lib/mozilla/plugins/libfreshwrapper-flashplayer.so: (dlopen: cannot load any more object with static TLS)"

并且认为我可以通过使用C ++ 11 thread_local构造将pthread g / setspecific代码转换为某些内容来避免它(已经有一个几乎可以直接重用的Windows应用程序实现)。

没有这样的运气。然后我发现我可能实际上已经做了与应该做的相反的事情(你几乎不能调用get / setspecific static )。是这样的吗?或者thread_local只是在幕后使用相同的pthread机制(Linux上的gcc 7)?

出于好奇:是否有一个良好,轻量级和高效的TLS跨平台实现既不使用pthread(除了可能用于获取当前线程参考),也不使用任何可能导致静态TLS饱和的其他内容?

0 个答案:

没有答案