除了将全局变量和静态变量设置为线程本地之外,线程本地存储是否在其他任何地方使用?它在我们编写的任何新代码中是否有用?
问问题
492 次
4 回答
4
TLS 在新代码中当然很有用。如果您想要一个需要特定于每个线程的全局变量(如errno
在 C/C++ 中),那么 thread-local-storage 就是要走的路。
于 2009-11-23T18:18:31.733 回答
1
线程特定的单例对象?一个多线程 Web 服务器,其中每个线程处理一个请求,很可能会出现一些 TLS 数据(如请求 URL 或一些数据库连接,本质上是一些资源打算在请求处理期间的任何时候使用(如果需要) ) 以便在需要时可以在代码中的任何位置轻松访问它们。
于 2009-11-23T18:53:45.000 回答
0
这些天errno
通常放在线程本地存储中。
在某些情况下(例如:需要启动代码的 DLL 等共享库)使用线程本地存储可能会出现问题。
于 2009-11-23T18:48:50.767 回答
0
我只需要它来进行线程特定的错误处理和优化(在 C 中):
__thread int cpfs_errno;
static __thread struct Cpfs *g_cpfs;
在这个例子中,这节省了我struct Cpfs *
通过几十个函数的上下文指针,其中它永远不会改变。
于 2010-08-25T06:40:30.740 回答