【发布时间】:2011-03-02 22:04:02
【问题描述】:
基本上,我想在多个线程中处理项目列表,而不是一次处理一个。 我只想要一次有限数量的线程。 这种方法有意义吗?为线程计数使用全局变量是唯一的选择吗? (下面是伪代码)
foreach item in list
while thread_count >= thread_max
sleep
loop
start_thread item
thread_count++
next
function start_thread(item)
do_something_to item
thread_count--
end function
【问题讨论】:
-
这种机制来自 .NET 4.0 的 OOTB。 :)
-
为什么要控制线程数?使用Threadpool 让框架做出最佳决策。
-
所以我可以遍历列表并在每个项目上使用 QueueUserWorkItem 而不必担心有多少线程正在运行?游泳池会为我管理吗?有趣...
标签: c# .net multithreading plinq parallel-extensions