一切都完全是理论上的,这个问题刚刚浮现在脑海中,我不完全确定答案是什么:
假设您有一个计算 4 个独立计算的应用程序。(完全独立,不管你按什么顺序做,你不需要一个来计算另一个)。还假设这些计算很长(分钟)并且受 CPU 限制(不等待任何类型的 IO)
1) 现在,如果您有一台单处理器计算机,单线程应用程序在逻辑上将比(或相同)多线程应用程序更快。由于计算机一次不能用一个处理器做多于一件事,它会在上下文切换等方面“浪费”时间。到目前为止,一切都很好?
2)如果您有一台4 处理器计算机,则 4 线程很可能比单线程更快。正确的?您的计算机现在可以一次执行 4 个操作,因此将您的应用程序划分为 4 个线程是合乎逻辑的,并且它应该以 4 个计算中最长的时间完成。到现在还好吗?
3)现在我很困惑的实际部分 - 为什么我的应用程序会创建比可用处理器数量(实际上 - 内核)更多的线程?我已经编程并看到了创建数十个和数百个线程的应用程序,但实际上 - 对于普通计算机来说,完美的数字大约是 8?
PS我已经读过这个:线程与单线程 但没有安静地回答这个问题。
干杯