我有一个线程应用程序,在我认为是性能密集型的所有代码部分周围都有计时块。这些部分足够长,即使在最终生产运行中,时序代码也可以保持活动状态。该应用程序有一堆工作线程从任务池中提取工作。
在我当前的自定义池实现中,我为每个工作线程计算了两个额外时间:(1) 在空池上等待作业到达的空闲时间量和 (2) 未考虑的“丢失”时间量通过空闲或计时块(表示我错过了一个性能密集型区域)。
我现在正在考虑将我的代码切换到英特尔线程构建模块。使用 TBB 任务时是否可以测量空闲时间?空闲时间和丢失时间的总和可以很容易地通过从总挂钟间隔中减去每个定时部分来计算,但是分别获取每个部分需要特殊支持(或者可能是一个具有低优先级的特殊空闲任务,它会旋转并试图抢占自己?) .
注意:我也在http://software.intel.com/en-us/forums/showthread.php?t=107203上问过这个问题,并将同步任何答案。