0

.NET 4 和 4.5 白皮书对并行库如何提高 IO 访问性能进行了评论。(下面的缓冲串行队列示例)

在此处输入图像描述

问题:

有没有人成功地将 .NET 4 并行缓冲或 .NET 4.5 Async/Await与 Azure 存储集成?

如果是这样,对 ThreadPool 有什么影响,在 ASP.NET 的线程池之外运行它是否有利?

我对 Webrole 和 Worker-only 实现感兴趣。

资源:

4

1 回答 1

0

TPL 或 async/await 是纯粹的框架结构。如果您管理线程或手动使用异步调用,它们“简单地”使您可以更轻松地完成相同的任务。无需将任何东西与 Azure 存储集成。

TPL 和建立在它之上的 async/await 功能,使用调度程序来安排工作。默认调度程序使用工作窃取技术的4.0 线程池。这意味着您不必担心将工作安排到 ThreadPool。

至于加速流操作,性能提升来自于分解复杂的流操作并创建一个步骤管道。每个步骤都异步执行,可能使用单独的核心或超线程(如果可用)。这允许 IO-bound 操作与 CPU-bound 操作并行运行。

在您的示例中, TransforStream 将块从输入流异步复制到加密器,然后再到压缩器。这允许每个步骤尽可能快地异步执行:输入流继续从磁盘读取,而压缩器和加密器处理内存中的数据。

至于 Windows Azure 存储性能,这些问题并非特定于 TPL。您应该注意,每个分区或 blob 最多可以处理 IO 操作。最好的选择是对数据进行分区,以便您可以将并行请求发送到不同的分区。您将不得不使用不会创建“热”分区的分区方案。虽然分区对于所有 Azure 应用程序都很重要,但使用异步操作意味着为每个 Web 请求执行更多的 IO 请求。

在回答您的问题时,在 Azure 上使用 TPL 与任何其他应用程序没有什么不同。

于 2012-05-22T07:19:32.467 回答