2

我有一个问题,我的应用程序随线程数线性扩展(想想 800 个线程在双核 CPU 上的性能是 400 个线程的两倍)。我的直觉告诉我线程正在休眠或被阻塞......但我在 callgrind 中看不到它。

callgrind 也测量函数时间,或者只是线程活动创建数据的时间。如果不清楚我要问什么......线程确实

i ++;

2 秒,然后

sleep(1);//thread will not be scheduled to run for min 1 second...  

...将i++是调用图的大约 100% 或大约 66%。

4

1 回答 1

1

Valgrind 收集用户时间统计信息,而不是实时统计信息。因此,如果线程相互中断,您将不会在 Valgrind 中看到它。您将得到的只是执行每个函数所花费的实际时间。

于 2012-02-06T23:56:31.050 回答