这是否有意义,我的计算机只能并行运行4个线程
Does it makes any sense, my computer can run only 4 thread in parallel?
我确实尝试在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密集计算时,从大量线程中没有太多可获得的。
相关文章:
- 为什么我不能让 3 个网络摄像头与 pthreads 并行运行?
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- 如果事件在仍在执行时再次设置,RegisterWaitForSingleObject 是否会并行运行回调?
- 如何并行运行与OpenGL并行的程序
- 在 2 个并行运行的脚本(python 和 C++)之间传递消息
- 从Qt/C++-App并行运行两个Lua函数
- C++ - 谷歌测试 - 如何在不同的目录中并行运行所有测试?
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- OpenMP 似乎不是并行运行的
- 使用 vector<thread> 和 .join() 未并行运行的多线程C++程序
- 最大线程数 - 如何确定C++线程是否并行运行?
- 等待条件变量后未并行运行的线程
- 单元测试任务使用 QThreadPool 并行运行
- 这是否有意义,我的计算机只能并行运行4个线程
- 为什么两个执行矩阵乘法的过程并行运行比连续运行慢
- C++STL多线程,并行运行计算
- 在C++中并行运行线程
- 如何在C 中使用OpenMP并行运行两组代码
- 并行运行一个应用程序,同时用 C++ 启动另一个应用程序
- 有没有一种方法可以并行运行C++单元测试