在某些情况下,我希望能够在使用任务时控制实际的并发性。
这方面的一个很好的例子是编写一个小客户端来加载测试服务器端API。在这种情况下,我希望随时有X个并发请求。
现在,如果我使用TPL,我只能设置最大并行度,这是不一样的。 我考虑过使用长时间运行的任务,但从我读到的内容不推荐:
当然我可以使用线程而不是任务,但是如果有一个使用TPL实现实际并发的选项,我宁愿这样做。
答案 0 :(得分:1)
如果要直接控制运行特定代码段的数字线程,则不应使用TPL。 TPL在任务内联和工作窃取等方面进行了优化。即使您设法同时获得正确数量的线程,您也可能无法生成预期的负载量。特别是如果任务花费大部分时间等待,例如在http或wcf请求中。
信号量可能就足够了。