如何实现分层锁或其他同步模式?

时间:2011-03-10 23:30:32

标签: .net multithreading caching atomic

我有一系列逻辑上连接的A,B和C对象集合,它们由writer线程,只读线程和读写线程访问。

每个A对象可以有几个相关的B对象,每个B对象可以有几个相关的C对象。一个B对象只能与一个A对象相关,同样,一个C对象只能与一个B和A对象相关。这意味着在更新A时,所有相关的B和C也必须被锁定,相反,如果更新C,相应的B和A也会被锁定?

如何实现这种结构的同步?

1 个答案:

答案 0 :(得分:0)

  

更新A时,所有相关的B和   Cs也必须被锁定,并且在   反过来,如果更新C,那么   相应的B和A也被锁定

有了这个限制,你只需要为每组A及其相关的B和C需要一个互斥锁。这个互斥锁在逻辑上属于A对象,因为这些组中只有一个,但是在B和C对象中保留引用可能是明智的,这样当必须进行更新时可以直接从那里锁定它。 ,无需先遍历对象树来查找互斥锁。