这是否有意义,我的计算机只能并行运行4个线程

Does it makes any sense, my computer can run only 4 thread in parallel?

本文关键字:并行 运行 4个 线程 计算机 是否 有意义 我的      更新时间:2023-10-16

我确实尝试在CPP中进行hardware_concourrency,结果是4,但对我来说没有任何意义。我尝试操作250个线程并行运行,每个线程都连接到LAN上的另一个插座,并且运行良好。

所以,我不明白,如果系统对我说我只能平行4个线程,我该如何操作250个线程?

只有4个CPU内核。更多的线程不会在Parellel中运行,并且将在高速之间简单地交替。

硬件线程和软件线程之间存在差异。操作系统可以并行运行许多线程,但仅对其中4个线程进行执行。

这就像打电话在电话上等待:您与A,人b通话,您接听人b。您只能与其中一个交谈,但可以在不关闭呼叫的情况下切换。

与线程相同:操作系统将所有这些都保持打开状态,并分配了资源,但是通过分配小块的时间来分配CPU时间。

我认为您应该知道并发和并发之间的区别。并行表示同时的计算机运行作业,这意味着计算机在人们无法感觉到的时间内运行作业。

重点是:您的软件线程可能会花费大量时间等待。例如,来自IO的传入数据;就像磁盘读取的数据一样;或越过网络。

如果您将自己限制在CP支持的" Real HW"线程的小型n 中...那么您将在吞吐量中失去很多潜在的收益。

换句话说:使用A 高M 软件堆栈的潜在好处在很大程度上取决于您的工作负载情况。

当您的应用程序主要进行IO相关的活动时,更多的线程意味着"等待"时间更合理。

但是,当您的应用程序主要进行CPU密集计算时,从大量线程中没有太多可获得的。