假设我有一个4核CPU,我想在最短的时间内运行一些进程.这个过程理想上是可并行化的,所以我可以在无限数量的线程上运行它的块,每个线程花费相同的时间.
由于我有4个内核,我不希望通过运行比内核更多的线程来加速,因为单个内核只能在给定时刻运行单个线程.我对硬件知之甚少,所以这只是猜测.
在比线程更多的线程上运行可并行化的进程是否有好处?换句话说,如果我使用4000个线程而不是4个线程运行它,我的进程会更快,更慢,还是在大约相同的时间内完成?
parallel-processing cpu
所以我知道我可以使用setrlimit和朋友增加Linux中进程的线程数.据此,在线程的数量的理论极限是由存储器(某处大约100,000k)测定.对于我的使用,我正在考虑以协作方式使用FIFO调度程序,因此虚假的上下文切换不是一个问题.我知道我可以将活动线程数限制为核心数.我的问题是线程数量的实际限制是什么,之后调度程序中的假设开始被消除.如果我保持真正的合作风格是额外的线程"免费"?研究的任何案例或实际的例子都会特别有趣.
Apache服务器似乎是最适合这种情况的程序.有没有人有任何数字与他们在变得无用之前看到Apache产生了多少线程相关?
相关,但与Windows,先发制人代码有关.
c++ linux multithreading
c++ ×1
cpu ×1
linux ×1
multithreading ×1
parallel-processing ×1