日期:2014-05-16  浏览次数:20726 次

TSD能被其他线程访问?
APUE上的话
“线程没有办法阻止其它线程访问它的数据,线程私有数据也不例外” 怎么理解啊?那有啥办法访问其他线程的私有数据啊?

进程中的所有线程都可以访问进程的整个地址空间,除非使用寄存器(一个线程真正拥有的唯一私有存储是处理器寄存器),线程没有办法阻止其它线程访问它的数据,线程私有数据也不例外,但是管理线程私有数据的函数可以提高线程间的数据独立性。


happy 2014 new year to everyone

------解决方案--------------------
引用:
Quote: 引用:

这句话你哪部分不理解?我给你解释下。

"线程没有办法阻止其它线程访问它的数据,线程私有数据也不例外"
TSD设立的初衷不就是禁止其他线程访问自己的TSD呢 ?但是看这个话的意思是刚好相反呢


没有办法阻止。我的理解是,使用TSD方式只是保证一键多值而已。通过pthread_getxxx方式不同的线程获取的值不一样。其实TSD的实现的时候,数据存储位置还是在进程空间内,同样可以通过地址访问到。