【发布时间】:2013-10-13 17:31:55
【问题描述】:
我目前正在开发一个依赖于许多不同 Web 服务来获取数据的应用程序。由于我想对每个服务进行模块化并在其中有一些依赖(service1 必须在服务 2 和 3 之前运行等),所以我在自己的任务中运行每个服务。
任务本身要么是
主动运行,这意味着他们正在将请求发送到 Web 服务并正在等待响应或处理响应
等待(通过监视器和超时) - 一旦任务完成,所有等待的任务都会唤醒并检查它们的依赖关系是否已完成
现在,系统正在以我所谓的良好性能运行(特别是因为性能相当可忽略不计) - 但是,应用程序会生成相当多的任务。
所以,我的问题是:在这种情况下,大约 200 个任务是否太多?它们是否会产生那么多开销,以使基本上无线程的方法会更好?
【问题讨论】:
-
这可能取决于 (1) 必须完成的任务和 (2) 模块的粒度。
-
这些任务大多只是向网络服务发送请求,即发送一个推特订阅请求,处理非常小(过滤推文)。我为每个项目启动一个新任务,这意味着大约 1-30 个任务“同时”运行并且不等待依赖 --- 通常每个 web 服务大约一个模块(目前总共大约 10-15 个模块)。
-
在我看来这是可行的,因为“运行”仅仅意味着等待服务器的响应......
-
答案取决于这些任务的作用。你说web请求,为什么不异步呢?如果你做异步,那么你不需要担心资源
标签: c# multithreading task