达尔文 SIGPROF
setitimer + sigprof 不适用于 64 位 darwin。
参考文献:
http://openradar.appspot.com/9336975
http://lists.apple.com/archives/Unix-porting/2007/Aug/msg00000.html
鉴于此,在 darwin 上构建基于时间的采样分析器的推荐方法是什么?在多线程环境中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我最终创建了一个单独的分析器线程,该线程会休眠一段时间,并使用
SIGPROF
来pthread_kills
所有其他线程。SIGPROF
处理程序会查看线程消耗了多少 cpu 时间,如果太少则进行处理。I ended up creating a separate profiler thread that sleeps for intervals and
pthread_kills
all other threads withSIGPROF
. TheSIGPROF
handler looks at the how much cpu time the thread consumed and punts if it's too little.