我正在编写一些基本上从套接字接收数据、执行反序列化然后传递给我的应用程序的代码。反序列化的对象可以按它们的 id 分组(在反序列化过程中生成 id)。
为了提高我的应用程序的性能,我想使用 C# 4.0 附带的新并行功能。我唯一的限制是 2 个线程无法访问具有相同 ID 的对象。现在我知道我可以对将放置在对象内部的同步对象执行 lock(),但我想避免这些锁(这里的性能是一个问题)。
我想过的设计:
- 创建某种分区器,将按 ID 拆分数据(这将确保我将获得的每个缓冲区都将始终具有相同的对象 ID 组)。
- 使用 PLINQ 的 TPL 分配线程
有人可以建议我一些这样做的来源吗?