【发布时间】:2012-08-24 04:15:49
【问题描述】:
我有一个扫描网络的程序,它通过使用大量等待数据从网络返回的任务(和并行 foreaches)来实现。问题是,虽然我知道这些任务几乎不使用任何 CPU 处理,但 CLR 并没有,而且它坚持要非常缓慢地启动(特别是因为它运行在两核 CPU 上)。
如何强制 CLR 同时启动更多任务?目前程序正在等待很多,我怎样才能让它同时打开更多的连接?
【问题讨论】:
-
不确定这里的任务是否能给你带来任何好处;你正在等待 I/O
-
"当前程序正在等待很多" 您的源代码阻塞或 TPL 停止启动线程?您做了哪些工作来将问题缩小到 CLR?您是否有代码可以展示您可以发布的问题?
-
TPL 不会产生更多线程,它会卡在一个较低的数字上并缓慢上升。 @AndrewBarber,我认为任务应该替换所有 C# 代码中的线程,这是另一个抽象级别。
标签: c# concurrency task-parallel-library