我对TLS以及它与局部变量,全局变量和局部变量有何区别几乎没有疑问。
通常,我无法获得局部变量和线程局部变量之间的区别。
答案 0 :(得分:1)
函数中存在局部变量。函数返回后,它们就消失了。线程变量存在于线程中;一旦线程退出,它们就消失了。就生存期而言,您可以说TLV等同于线程启动函数的局部变量,除非您不必显式地将对它们的引用传递给代码。
请注意,有两种方法可以在本机Windows程序中使用TLV。 Microsoft C ++具有__declspec(thread)
修饰符,并且还有一系列Windows API函数-TlsAlloc()
等。
如果您在创建线程退出后尝试从另一个线程访问它,那是未定义的行为。
这是一个实现细节。但最有可能在堆上。
嗯,这取决于您。从理论上讲,他们通常使用TLV所做的几乎所有事情,您也可以不用...
只要线程正在运行。
定义“独占”。