Vic*_*lea 6 c c++ multithreading pthreads
我正在使用Pthread在C++中开发一个多线程程序,我需要在每个线程中分配本地内存.在谷歌搜索后,我发现了pthread_key_t类型,这是一种允许您在TLS中分配内存的地图.
所以我的问题是线程函数中的局部变量和pthread_key_t之间的区别是什么?你能给出pthread_key_t的正确用法示例吗?
线程本地存储和本地变量之间的区别在于线程本地存储不需要是函数的本地存储。一旦声明它们的函数返回,常规局部变量可能不再被访问。线程特定的存储可通过创建它的函数退出后访问pthread_getspecific并可以安全地使用。pthread_setspecific
您可以将线程局部变量视为线程特定的全局变量,在同一线程中运行的函数之间共享。它们通常用于制作大量使用全局变量的遗留代码,使其成为多线程安全的。与所有全局变量一样,如果您可以只使用局部变量,则应小心使用它们 \xe2\x80\x94 ,无论如何都要这样做。如果线程中确实需要全局变量,请使用线程本地存储。
\n