为什么要使用线程本地存储(TlsAlloc,TlsGetValue,ets)而不是局部变量

mat*_*z m 8 storage multithreading local thread-local-storage

我的问题是为什么在线程函数中使用TLS机制而不仅仅是局部变量?能否请您提供一些很好的例子,或者TLS优于本地变量的优势是什么?谢谢Mateusz

Dav*_*nan 7

如果你可以使用局部变量然后这样做,你总是可以使用本地变量.作为最后的手段,您应该使用线程本地存储,它几乎具有与全局变量相同的所有缺点.虽然您正在寻找使用线程本地存储的理由,但实际上最佳做法是寻找避免它的方法!


Kar*_*uru 6

这是英特尔关于使用线程本地存储减少同步的良好链接:https : //software.intel.com/en-us/articles/use-thread-local-storage-to-reduce-synchronization

  • 我跳过了这篇文章,但稍后阅读了这篇文章。坏动作,好文章! (3认同)

btr*_*eat 5

TLS 对诸如特定于线程的用户会话上下文信息之类的事情很有帮助,但可能用于各种不相关的方法。在这种情况下,TLS 比在调用堆栈上下传递信息更方便。

  • 我同意 TLS 的实际用例数量很少,应该首先探索其他替代方案。但是,我会说,对线程执行的所有方法共有的数据使用 TLS 比修改数百个方法签名以传递该数据更可取。 (3认同)