1

Im planning to use workerprocess in azure for long running task. But im coonfused whether to use Task parallel library or Threading.

-Mahender

4

4 回答 4

0

TPL 通过特殊的TaskCreationOptions枚举成员支持长时间运行的任务:LongRunning

指定任务将是长时间运行的粗粒度操作。它向 TaskScheduler 提供了一个提示,表明可能需要超额订阅。

TPL 使您可以更轻松地使用 CPU 的多个内核。在 Windows Azure 中,您可以根据您选择的实例大小拥有多个 CPU 内核:

  • 中:2 核
  • 大:4 核
  • 超大:8 核

与简单地使用线程相反,任务 (TPL) 允许您使用实例中可用的大部分 CPU 内核。

于 2012-09-24T14:59:49.217 回答
0

我们在 Azure 中使用 TPL 并取得了一些成功,我会推荐它。在不了解您的项目的情况下,我会说您应该很好地继续使用 TPL。

于 2012-09-24T14:15:59.533 回答
0

长时间运行的任务需要多长时间?

如果任务需要等待外部输入或持续很长时间,Workflow Foundation 是一个不错的选择,因为您可以将任务状态序列化到数据库。该数据库可以在 Windows Azure SQL 数据库中创建。

http://msdn.microsoft.com/en-us/library/vstudio/ms735967(v=vs.90).aspx

可以在云服务中启用任务调度程序(有一些黑客攻击),这为您提供了另一种选择。

并行任务库是短期计算密集型工作负载的不错选择。创建线程需要一些计算和内存开销,因此 TPL 通过维护线程池来帮助您执行任务。但是如果你需要长时间阻塞,或者你想同时运行很多线程,这可能不是最好的选择,你应该考虑自己管理线程。

您的要求的更多细节将使我们提出更好的建议。

于 2012-09-26T12:50:03.407 回答
0

由于工作人员角色(或 Web 角色)正在构建在 Windows Server 虚拟机中运行的代码,因此我认为该决定基于您的应用程序和相关架构,而不是基于 Windows Azure。如果部署到 Windows Server,我会选择您要使用的那个。请记住正确捕获Run()方法中的任何错误/异常,因为如果您退出Run(),实例将通过其关闭顺序并被回收。

于 2012-09-24T14:46:35.687 回答