2011-11-02 87 views
0

我使用VTune来检查我的代码的并发性。 Here是输出的屏幕截图。你可以看到,有一个初始阶段有一个线程,然后〜0.3秒的密集多线程工作(棕色尖峰),然后几乎3秒的空闲(没有棕色的“CPU”,只是绿色的“运行”)。OpenMP,VTune,空闲线程

任何想法会导致线程处于绿色空闲状态?我的代码应该在做所有密集计算后返回,没有理由再等3秒...

回答

0

您的程序在没有探查器的情况下执行多少?速度更快吗?查看VTune的时间线视图,我得到一个印象,即主线程可能使用pthread_exit()退出main()函数,因此OpenMP工作线程继续存在,阻止程序结束,直到某个超时过期并且工作线程决定关闭自己。请参阅here关于pthread_exit的讨论。