(TLS)Thread Local Storage(写中.....)

来源:互联网 发布:oppo怎么删除淘宝评价 编辑:程序博客网 时间:2024/04/29 10:57

Thread Local Storage:线程本地存储

 

    我们知道,普通的一个进程,它的栈空间是8M,我们可以通过ulmit -a查看:stack size (kbytes, -s) 8192;

    同样的, 线程也不例外线程也是需要栈空间。

   对于属于同一个进程(或者说是线程组)的多个线程他们是共享一份虚拟内存地址的,如下图所示。这也就决定了,你不能无限制在童一个进程里创建线程,因为纵然你线程什么都不做,每个线程默认耗费8M的空间(事实上还不止,还有管理结构,后面陈述)。Ulrich Drepper大神有篇文章《Thread numbers and stacks》,分析了线程栈空间方面的计算。如果我们真的需要很多个线程的话,幸好我们还是可以做一些事情。我们可以通过pthread_attr_setstacksize,设定好stack size属性然后在pthread_create;

   线程栈如上图所示,共享进程(或者称之为线程组)的虚拟地址空间。既然多个线程聚集在一起,我怎么知道我要操作的那个线程栈的地址呢。要解决这个问题,必须要领会线程和进程以及线程组的概念。下面用实际的代码来解释这一切,然后结合现象分析原因:

 

 

0 0
原创粉丝点击