Jad*_*ias 2 .net connection parallel-processing multithreading
有人可以帮忙吗?
当您开始将异步调用与Parallelization混合以获得最佳性能时,更新事情会变得复杂得多.这是在几个下载器上实现的,比如Firefox下载器,它同时获得2次下载,当其中一个完成时,它会获得下一个文件,依此类推.也许它似乎很容易实现,但是当我实现它时,我已经并且仍然有麻烦使它成为通用的(对WebRequest和DbCommand有用)并处理问题(即超时)
赏金猎人赏金将被授予第一个链接可靠和免费($$).NET库的赏金,它提供了一种简单的C#方式来并行化异步任务,如HttpWebRequests.BegingetResponse和SqlCommand.BeginExecuteNonQuery.并行化不能等待N个任务完成然后启动下一个N,但是一旦N个初始任务中的一个完成,它必须立即开始新任务.该方法必须提供超时处理.
查看连接的计数信号量. http://en.wikipedia.org/wiki/Semaphore_(programming)
编辑:要回答您的评论,.NET Framework已经有了.http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx
您能否提供更多有关Parallel Linq无法工作的信息?
我的观点是,你的任务最适合PLinq.如果您在8核计算机上运行,PLinq将拆分为8个任务,并为您排队所有剩余的任务.
这是草案代码,
PagesToDownload.AsParallel().ForAll(DownloadMethodWithLimitConnections);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么PLinq消耗你的资源.根据我的测试,PLinq性能甚至比使用ThreadPool更好.