0

我正在编写一些基本上从套接字接收数据、执行反序列化然后传递给我的应用程序的代码。反序列化的对象可以按它们的 id 分组(在反序列化过程中生成 id)。

为了提高我的应用程序的性能,我想使用 C# 4.0 附带的新并行功能。我唯一的限制是 2 个线程无法访问具有相同 ID 的对象。现在我知道我可以对将放置在对象内部的同步对象执行 lock(),但我想避免这些锁(这里的性能是一个问题)。

我想过的设计:

  1. 创建某种分区器,将按 ID 拆分数据(这将确保我将获得的每个缓冲区都将始终具有相同的对象 ID 组)。
  2. 使用 PLINQ 的 TPL 分配线程

有人可以建议我一些这样做的来源吗?

4

1 回答 1

1

我建议PLINQ在为多个处理器或内核开发时。

PLINQ 是一个查询执行引擎,它接受任何 LINQ-to-Objects 或 LINQ-to-XML 查询,并在可用时自动利用多个处理器或内核执行。编程模型的变化很小,这意味着您无需成为并发专家即可使用它。事实上,线程和锁甚至不会出现,除非你真的想深入了解它是如何工作的。PLINQ 是 Parallel FX 的关键组件,Parallel FX 是 Microsoft® .NE​​T Framework 中的下一代并发支持。

包括:

  • 从 LINQ 到 PLINQ
  • PLINQ 编程模型
  • 处理查询输出
  • 并发异常
  • 在输出结果中排序
  • 副作用
  • 让 PLINQ 工作

并行 LINQ (PLINQ)

于 2012-08-12T09:34:24.690 回答