大型Parralel应用中的线程锁定

时间:2011-04-14 15:27:47

标签: multithreading architecture parallel-processing

我对大型应用程序中的并行化和线程锁定同步有一个更为笼统的问题。我正在开发一个具有大量对象类型的应用程序,它具有深层体系结构,也可以利用大多数关键任务的并行化。目前,通过系统的每个对象内的线程锁定管理来完成同步。问题是锁定范围只与每个对象一样大,而对象属性正在通过许多不同的对象传递,其中属性失去同步保护。

什么是线程管理的最佳实践,'同步上下文'& c。在大型应用程序?似乎唯一万无一失的解决方案是使数据同步应用程序广泛,以便任何时候任何对象都可以安全地使用数据,但这似乎违反了面向对象的编码概念。

如何最好地管理此问题?

1 个答案:

答案 0 :(得分:1)

一种方法是将对象设为只读;只读对象不需要任何同步,因为当另一个线程写入它时,任何线程都没有机会读取它(因为没有线程写入它)。可以使用无锁引用计数(使用原子计数器来确保线程安全)来处理对象生存期问题。

当然,不好的一面是,如果你真的想改变对象的状态,你就不能;您必须创建一个新对象,该对象是旧对象的副本,但更改的部分除外。根据您的应用程序的作用,可能会或可能不会接受这种开销。