首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ucontext和线程本地存储

ucontext和线程本地存储
EN

Stack Overflow用户
提问于 2012-09-12 05:29:20
回答 1查看 1.5K关注 0票数 5

我要问的平台是linux。我所说的线程本地存储是gcc中的pthread_xxx__thread

我想在我的程序中使用use,即makecontext,swapcontext等。所以我的问题是,它是如何与线程本地存储一起工作的?更具体地说,如果我使用swapcontext或setcontext切换到另一个光纤,线程本地存储也会改变,还是线程本地存储不是上下文的一部分?

另一个问题:如果TLS将被setcontext/swapcontext更改,那么无论我如何更改上下文,是否有任何东西会粘在线程上?另一方面,如果TLS将坚持上下文,那么是否有任何东西会粘在线程上而不会被setcontext/swapcontext所更改?

根据科学)的说法,Windows有线程本地存储和光纤本地存储.

EN

回答 1

Stack Overflow用户

发布于 2012-09-12 06:26:52

它没有很好地指定线程本地存储如何与setcontext/swapcontext交互。

在Linux上,线程本地存储不受setcontext/swapcontext的影响,一些软件依赖于这种行为--请参阅最近关于netbsd邮件列表的讨论,以了解更多信息:围绕p线程的swapcontext()

此外,还对C++:Parallelism.pdf中有关TLS与并行交互的一些思考。

编辑:也值得指出的是,makecontext/swapcontext已经从Open规范问题7中删除,因为它们已经被标记为过时一段时间了。作为替代,Boost.Context最近被添加到Boost库中(尽管它也不支持光纤本地存储)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12381716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档