代码之家  ›  专栏  ›  技术社区  ›  yesraaj

线程本地存储在其他地方使用?

  •  2
  • yesraaj  · 技术社区  · 15 年前

    线程本地存储是否用于除使全局变量和静态变量成为线程本地变量之外的其他任何地方?它在我们编写的新代码中有用吗?

    4 回复  |  直到 8 年前
        1
  •  4
  •   Charles Salvia    15 年前

    在新代码中,tls当然是有用的。如果您想要一个全局变量,它需要特定于每个线程,(比如 errno 在C/C++中,线程本地存储是必由之路。

        2
  •  1
  •   Shailesh Kumar    15 年前

    线程特定的单例对象?一个多线程Web服务器,其中每个线程处理一个请求,有相当大的可能性,一些TLS数据(如请求URL或一些数据库连接,基本上是一些资源,在请求处理过程中的任何时间点使用,如果需要),以便在需要时可以在代码中的任何位置轻松访问它们。

        3
  •  0
  •   T.E.D.    15 年前

    这些天 errno 通常放在线程本地存储中。

    在某些情况下(例如:共享库,如需要启动代码的DLL),使用线程本地存储可能是一个问题。

        4
  •  0
  •   Matt Joiner    14 年前

    我只需要它来进行线程特定的错误处理和优化(在C中):

    __thread int cpfs_errno;
    static __thread struct Cpfs *g_cpfs;
    

    在本例中,这将节省我传递的上下文指针 struct Cpfs * 通过几十个永不改变的功能。