线程局部存储 (TLS)
线程共享其所属进程的数据。此数据共享提供多线程编程的一个优点。但是,在某些情况下,每个线程可能需要其自己数据的副本。此类数据称作线程局部存储(或 TLS)。
例如,在一个事务处理系统中,我们可能在单独的线程中服务每个事务。每个事务都可能分配一个唯一标识符。为了将每个线程与其唯一标识符关联,我们可以使用线程局部存储。
很容易将 TLS 误解为局部变量。在单个函数调用期间,只有局部变量可见,而 TLS 数据在函数调用中可见。在某些方面,TLS 与静态数据类似。唯一区别在于 TLS 数据对每个线程都是唯一的。大多数线程库(包括 Windows 和 Pthreads)提供某种形式的线程局部存储支持;Java 也提供了支持。
广告