并行应用程序的Mutable与Immutable

Joa*_*nge 3 .net c# parallel-processing mutable immutability

在我写的应用程序中,我需要编写许多基类型,这很可能是不可变的.但我想知道可变类型在并行应用程序中如何与不可变类型进行比较.

你可以使用带有可变对象的锁,对吧?它与并行应用程序中不可变类型使用的其他技术相比如何?

你至少不使用具有不可变类型的锁,对吧?

Jon*_*len 7

类型

  • 尽可能使用不可变类型.
  • 尽可能使用线程安全集合而不是显式锁.
  • 只有在没有其他合理选择时才使用可变类型.

主题

  • 尽可能使用线程池.
  • 无法使用线程池时使用无限循环.
  • 手动启动和停止线程作为最后的手段.

如果必须使用显式锁,请将它们全部记录下来.特别是在锁定对象的顺序方面.如果你知道Foo对象总是在Bar对象之前被锁定,并且Foo(key 100)总是在Foo(key = 200)之前被锁定,你将不会遇到死锁.

  • 如果你在.Net 4.0中,请考虑使用任务并行库. (2认同)