如何在windows和linux下给定一个线程句柄,我可以确定其对应的静态线程本地存储块的开始和结束?
在C中的“线程fork”(理想的POSIX,但只是linux的作品)
java线程在terminal中单击时停止执行
Boost.asio和UNIX信号处理
了解MsgWaitForMultipleObjects
在C,multithreading,多个窗口调用一个窗口过程,将每个调用使用新的局部variables,或者我需要一个互斥体?
您可以在线程信息块中找到这些信息。 但请注意,这样做是访问未记录的结构,因此非常不便携,并可能在未来版本的windows中打破 。 看起来你可以从TIB中获得当前线程的线程本地存储区; 我不确定谁会得到另一个线程的TLS。
您可以尝试挖掘进程环境块(PEB),位于TIB的偏移地址0x30处,但同样,您正在处理可能会更改的未记录结构。
windows线程信息块在FS:0x2C处给出线程本地存储阵列的地址,这是一个指向每个模块的TLS的指针数组。 问题在于没有指示该数组有多大,或者每个模块TLS数据块有多大。
有关各种与线程本地存储相关的功能的更多信息,请参阅MSDN 。 您可以使用TlsGetValue()来获取特定的TLS值; 不要在内存中徘徊,即使它工作 – 你只是调用未定义的行为,这可能会发生在未来的windows版本中。
总结以上是内存溢出为你收集整理的如何find线程本地存储的开始和结束?全部内容,希望文章能够帮你解决如何find线程本地存储的开始和结束?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)