为什么计算绑定工作要比IO绑定工作在更少的线程上运行

时间:2018-09-05 04:43:23

标签: c# multithreading task task-parallel-library

请观看video 从5:15-5:46。

我正在youtube上观看此视频,而那个家伙正在解释有关TPL。我是TPL的新手,之前从未听说过它,并且进行了一些研究,发现它是一个非常复杂的系统,可简化在计算机上运行的线程数量和工作。但是,从时间跨度5:20-5:46,他展示了两个例子,它们完全使我s脚。第一个示例是计算绑定工作,他编写了一个for循环,该循环循环350,000,000次,这使他的计算机花费了大约1秒的时间。第二个示例是他编写Thread.Sleep(1000)的IO绑定工作。

我的问题是,为什么他编写的计算绑定工作仅使用2个线程,而他编写的IO绑定工作却使用5或6个线程?

1 个答案:

答案 0 :(得分:4)

CPU绑定意味着CPU正在忙于计算。因此,使用多于可用内核的线程是没有意义的。更多的线程意味着内核需要暂停一个线程才能在另一个线程上工作-进行额外的切换会减慢整个系统。

对于IO绑定工作,CPU只是在等待另一个系统响应。因此,与此同时,它可以做其他工作。这是异步/等待的地方。