当前位置: 技术问答>linux和unix
线程函数私有数据的疑问
来源: 互联网 发布时间:2015-06-03
本文导语: windows中,thread回调函数中的局部变量就是线程的私有数据,不用使用另外的方法去开辟。 linux里是不是也是这样?那么pthread_key_create这些函数有什么用呢? | pthread_key_create的主要作用是定义一个...
windows中,thread回调函数中的局部变量就是线程的私有数据,不用使用另外的方法去开辟。
linux里是不是也是这样?那么pthread_key_create这些函数有什么用呢?
linux里是不是也是这样?那么pthread_key_create这些函数有什么用呢?
|
pthread_key_create的主要作用是定义一个线程局部范围的全局变量,原因是线程共享整个进程的地址空间,在tls(thread local storage)支持之前,变量只有两个选择,一个是局部变量,只在线程堆栈上,另一个是全局变量,但是被所有线程共享,但是事实上很多时候线程需要的是一个线程作用域内的全局变量,这个函数的作用就是定义这种变量。
|
linux也可以
|
不论是在进程中还是在线程中,栈空间都是独占的。所以,局部变量是私有数据。