使用任务

时间:2016-10-05 10:00:09

标签: c# .net multithreading concurrency task-parallel-library

在某些情况下,我希望能够在使用任务时控制实际的并发性。

这方面的一个很好的例子是编写一个小客户端来加载测试服务器端API。在这种情况下,我希望随时有X个并发请求。

现在,如果我使用TPL,我只能设置最大并行度,这是不一样的。 我考虑过使用长时间运行的任务,但从我读到的内容不推荐:

https://social.msdn.microsoft.com/Forums/en-US/8304b44f-0480-488c-93a4-ec419327183b/when-should-a-taks-be-considered-longrunning?forum=parallelextensions

当然我可以使用线程而不是任务,但是如果有一个使用TPL实现实际并发的选项,我宁愿这样做。

1 个答案:

答案 0 :(得分:1)

如果要直接控制运行特定代码段的数字线程,则不应使用TPL。 TPL在任务内联和工作窃取等方面进行了优化。即使您设法同时获得正确数量的线程,您也可能无法生成预期的负载量。特别是如果任务花费大部分时间等待,例如在http或wcf请求中。

信号量可能就足够了。