首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pthread on-wakeup执行

pthread on-wakeup执行
EN

Stack Overflow用户
提问于 2012-11-19 23:35:45
回答 1查看 213关注 0票数 4

如何让我的pthread在每次被内核重新调度时执行一个函数?

我需要确定在哪个物理CPU/套接字(不是逻辑核心)上调度我的线程,并且不能一直这样做。

唤醒例程能否以某种方式挂接,以便仅在线程实际被重新调度时才对TLS进行必要的更新?

至于为什么我需要这个:我有代码每70 As每线程执行一次AMOs appx,如果地址没有被缓存到另一个套接字上,这是很好的,在两个套接字上部署相同的代码会产生15倍的性能影响,因为频繁的缓存无效。我打算为此特别分配内存,它只在运行相同L3缓存的线程之间共享。因此,我需要确定我在哪个套接字上运行,并对正确的内存块进行寻址。显然,我可以调用sched_getcpu并将其与/proc/cpuinfo中的物理CPU进行比较,但这是一个相当大的开销。但是,我负担不起为每个线程分配线程私有内存,这太昂贵了。

EN

回答 1

Stack Overflow用户

发布于 2012-12-09 04:08:55

根据我在中所读到的内容,内核并没有提供您想要的服务或接口。使用pthread_setaffinity (如上面的@osgx所建议的,或者在最近的linux内核实现中,使用)或在开始时为每个cpu套接字缓存一个TLS key (如上面的@caf所建议的)可能是在该方向上使用的最好方法。

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

https://stackoverflow.com/questions/13457035

复制
相关文章

相似问题

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