使用线程可以显着提高性能,因为有更多的“工作人员”执行该任务。但是,我已经进行了测试,并注意到这是影响最大的前几个线程。线程,为什么1000个线程和2000个线程没有明显差异
对于大量的线程,比如说1000线程和2000线程,线程的时间如何变得几乎不变?
是不是因为没有足够的工作去做所以他们中的大部分都会睡觉等待工作弹出?
编辑: 我在C中做了一个多线程发现者,它只是作为bash中的find命令工作。我花了一些时间用不同数量的线程(phread_create),并注意到通过创建几个线程,我获得了最大的性能影响。但是,40线程和600线程的时间几乎相同。为什么?
感谢
不,这是因为没有足够的工人。你的CPU有2000个核心吗?这就是为什么。 –
除非您有数百个CPU内核创建超过一千个线程,否则会浪费系统资源。操作系统将在您的线程之间进行更多的切换,而不是线程本身有时间运行。您创建的线程越多,线程将运行的时间就越少。 –
没有更多的上下文和细节,这不是一个真正有意义的问题,尤其是考虑到“线索”的不同可能含义。 – pvg