我正在编写一些基本上从套接字接收数据的代码,执行反序列化然后传递给我的应用程序。反序列化的对象可以按其id分组(在反序列化过程中生成id)。
为了提高我的应用程序的性能,我想使用C#4.0附带的新并行功能。我唯一的约束是2个线程无法访问具有相同id的对象。现在我知道我可以在同步对象上执行lock(),这个同步对象将被放置在对象内但我想避免这些锁(这里的性能是个问题)。
我想过的设计:
有人可以建议我这样做吗?
答案 0 :(得分:1)
在开发多个处理器或内核时,我建议PLINQ
。
PLINQ是一个查询执行引擎,它接受任何LINQ到对象或LINQ到XML查询,并在可用时自动利用多个处理器或内核执行。编程模型的变化很小,这意味着您不需要成为并发大师就可以使用它。事实上,线程和锁定甚至不会出现,除非你真的想深入了解它是如何工作的。 PLINQ是Parallel FX的关键组件,它是Microsoft®.NETFramework中的下一代并发支持。
This涵盖: