2010-06-17 55 views
1

目前我正在阅读另一个由他人编写的文档,我很困惑。大部分内容是关于编写本文档的项目中实现的多线程同步。一个无法解释的模式

在这个项目中,这个程序员实现了一些控制整个应用程序中使用的关键部分的类。

它只是一堆类跟踪哪个线程具有什么关键部分,并且是本机Win32 CRITICAL_SECTION结构的包装。

然后有以-Visit结尾的类,这些类在应用程序中实际使用,并将检查临界区是否在进入之前已进入线程。

这位程序员称之为'Acquisition design pattern',我想知道是否存在这样的模式,并且可能将其称为别的东西,然后这个程序员称它为什么,因为我无法在任何地方找到这个名字下的模式?

我知道我还没有详细介绍,但是我可以详细了解更多细节。

+2

在软件开发中有一些规则,设计模式尽可能模糊和不直观地命名;访问者,工厂,适配器,复合,模板,权重和状态模式?不妨称他们为红色模式,蓝色模式,绿色模式,黄色等等。除非您已经非常熟悉实施细节,否则这些名称毫无意义。 – Juliet 2010-06-17 15:08:05

+0

@Juliet,常见模式的名字并不是因为某个标准委员会决定从现在开始使用这些模式,而是因为许多人发现它们具有直观性和描述性,所以它们开始使用它们。从我记得的(从GoF书籍和其他地方),大多数模式确实有多个名称,所以出现了一些术语竞争,并且自然选择了最好的模式。 – 2010-06-17 15:22:56

+0

@Juliet,当然不是所有的名字都是完美的,但我个人认为可以传达一些粗略的想法。一个工厂或适配器不知道所有细节的细节。无论如何,如果你认为你对任何模式都有更好的名字,请随时传福音:-) – 2010-06-17 15:28:52

回答

0

当我实现这样的类,其目的如下:

  • 裹的O/S的原语(例如,关键段)
  • 登录它们的使用
  • 检测deadly embrace,通过跟踪哪些线程拥有哪些锁,并在获取每个锁前测试致命的拥抱
  • 通过跟踪线程获取锁的顺序来预测并避免致命拥抱的工具(例如lockA后跟loc kB),记住这是'通常的顺序',然后警告一个线程是否以不正常顺序锁定(例如, lockB后跟lockA)。