我们有一个.ForEach
循环(TPL),它启动了很多很多任务。由于 TPL 正在使用线程池中的线程,我想知道当没有更多可用线程时会发生什么?调用代码是否会阻塞,直到线程再次可用?
我知道线程池有一个全局工作队列,工作项 ( Task
) 将在其中排队。那个队列能满吗?
我们的问题是有些任务运行时间很长(30 分钟),有些任务很短(一秒钟),但我们有成千上万个这样的任务,如果不是更多的话。TPL 是否为我启动的每个任务启动一个新线程?我想不是。线程池什么时候会耗尽?
我们有一个.ForEach
循环(TPL),它启动了很多很多任务。由于 TPL 正在使用线程池中的线程,我想知道当没有更多可用线程时会发生什么?调用代码是否会阻塞,直到线程再次可用?
我知道线程池有一个全局工作队列,工作项 ( Task
) 将在其中排队。那个队列能满吗?
我们的问题是有些任务运行时间很长(30 分钟),有些任务很短(一秒钟),但我们有成千上万个这样的任务,如果不是更多的话。TPL 是否为我启动的每个任务启动一个新线程?我想不是。线程池什么时候会耗尽?