如何find线程本地存储的开始和结束?

如何find线程本地存储的开始和结束?,第1张

概述如何find线程本地存储的开始和结束

如何在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线程本地存储的开始和结束?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264569.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存