给定(特别是)以下场景:
- 每个核心一个线程,
- 每个核心都有自己独特的缓存,
- 缓存命中/未命中率对良好性能至关重要的程序(即今天的大多数程序)
我经常阅读有关线程池在多核系统中调度工作的好处。尽管有许多多线程方法,但通常在像这样的更智能的负载平衡方法和更天真的“按任务类型分配线程”方法之间进行比较,假设负载平衡已在开发时,而不是由系统本身在运行时。这方面的一个例子可能是一个线程上的专用数字运算和另一个线程上的渲染任务。
在我看来,在上述条件下,逐个任务类型的方法可以带来更好的性能,因为该内核的本地缓存对于分配给它的特定任务会更有效率?(假设等待不是什么大问题,即两个线程都在全速运行或接近全速运行。)
我还想知道线程安全机制在负载平衡与幼稚方法中可能会对性能产生什么影响。