许多任务但核心未完全使用

时间:2013-11-09 16:38:42

标签: c# task

我正在创建一个创建大量任务的程序。通常任务数量为10,000到50,000。该程序使用非常少量的锁,大约800,000中的一个,因此线程很可能不会相互阻塞。但是,我的cpu使用率仍然只有70%。我有两个问题。

  • 50k是否有过多的任务?
  • 在这种情况下,我的CPU使用率应该是100%,还是70%正常?如果不是,我将不得不再次查看我的锁定。

我正在创建一个创建大量任务的程序。通常任务数量为10,000到50,000。该程序使用非常少量的锁,大约800,000中的一个,因此线程很可能不会相互阻塞。但是,我的cpu使用率仍然只有70%。我有两个问题。

  • 50k是否有过多的任务?
  • 在这种情况下,我的CPU使用率应该是100%,还是70%正常?如果不是,我将不得不再次查看我的锁定。

任务信息

这些任务用于先呼吸搜索算法。 一个任务计算特定于此任务的节点的哈希值。然后,它使用此哈希在哈希表中查找节点。哈希非常快。查找通常也很快。

1 个答案:

答案 0 :(得分:2)

您没有达到更高的CPU使用百分比,因为您有太多活动线程。 每当一个线程耗尽其CPU时间片并让另一个线程在CPU上执行某些操作时,就会发生一种叫做“上下文切换”的事情。 这基本上保存了屈服线程的当前状态(例如,其堆栈),并恢复了第二线程的状态。 这是一个相当昂贵的操作,并且花费的时间没有用。 可能是的原因。