我确实尝试在cpp中执行4
,结果是TextInputLayout
,但这对我没有任何意义。我试图运行并行运行的250个线程,每个线程连接到局域网上的另一个套接字,并且它运行良好。
所以,我不明白,如果系统告诉我我只能并行运行4个线程,我怎么能运行250个线程?
答案 0 :(得分:5)
只有4个CPU核心。任何更多的线程都不会在parellel中运行,只会在高速之间交替。
答案 1 :(得分:2)
硬件线程和软件线程之间存在差异。 操作系统可以并行运行大量线程,但只执行4个线程。
就像电话上的呼叫等待:你跟人说话,人b打电话,你回答人b。您只能与其中一个通话,但可以在不关闭通话的情况下切换。
与线程相同:操作系统在分配资源的情况下保持所有打开状态,但通过分配小块时间在它们之间分配CPU时间。
答案 2 :(得分:1)
我认为你应该知道并行和并发之间的区别。并行意味着计算机同时运行作业,并发意味着计算机在人们无法感觉到的时间段内运行作业。
答案 3 :(得分:1)
重点是:您的软件主题可能会花费大量时间等待。例如,来自IO的传入数据;像从磁盘读取的数据;或来自网络。
如果您将自己限制在"真正的HW"的小n 号码中。您的CP支持的线程...然后您在吞吐量方面失去了很多潜在的收益。
换句话说:使用高m 数量的软件堆栈的潜在好处在很大程度上取决于您的工作负载情况。
当您的应用程序主要执行IO相关活动时,更多线程意味着"等待"时间花得更合理。
但是当你的应用程序主要进行CPU密集型计算时,从大量线程中获取的数据并不多。