【发布时间】:2011-04-04 13:18:23
【问题描述】:
我目前正在开发一个 Windows azure 项目,我们正在使用命令模式来封装我们的方法调用。现在我们正在尝试并行执行命令并控制创建的线程数。
首先想到:ThreadPool 好用,可以设置 MaxThreads。但据我所知,每个 Begin*(例如 BeginInvoke)方法都使用线程池,因此我们无法控制专用于我们命令的线程数。
今天一位同事在 MSDN 上发现了这个TaskScheduler,看起来比 ThreadPool 好,但我不知道它是否能正常工作。
除了线程池还有其他替代方案吗?使用 ThreadPool 和 Windows Azure 的经验?
【问题讨论】:
-
我只想控制最大线程数,而不是运行时的线程数,如果你这么想的话。
-
线程池在平衡未完成线程的数量方面做得非常好。你应该让它完成它的工作。 .NET 4.0 线程池在这方面做得更好。如果您的任务是长时间运行的任务,线程池可能不适合您(它比前一个做得更好);你会想要使用任务系统,或者自己创建和管理线程。
标签: c# multithreading azure azure-worker-roles