请观看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个线程?
答案 0 :(得分:4)
CPU绑定意味着CPU正在忙于计算。因此,使用多于可用内核的线程是没有意义的。更多的线程意味着内核需要暂停一个线程才能在另一个线程上工作-进行额外的切换会减慢整个系统。
对于IO绑定工作,CPU只是在等待另一个系统响应。因此,与此同时,它可以做其他工作。这是异步/等待的地方。