线程局部存储 (TLS)


线程共享其所属进程的数据。此数据共享提供多线程编程的一个优点。但是,在某些情况下,每个线程可能需要其自己数据的副本。此类数据称作线程局部存储(或 TLS)

例如,在一个事务处理系统中,我们可能在单独的线程中服务每个事务。每个事务都可能分配一个唯一标识符。为了将每个线程与其唯一标识符关联,我们可以使用线程局部存储。

很容易将 TLS 误解为局部变量。在单个函数调用期间,只有局部变量可见,而 TLS 数据在函数调用中可见。在某些方面,TLS 与静态数据类似。唯一区别在于 TLS 数据对每个线程都是唯一的。大多数线程库(包括 Windows 和 Pthreads)提供某种形式的线程局部存储支持;Java 也提供了支持。

更新时间:2019 年 10 月 17 日

803 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告