2010-06-17 5 views
1

В настоящее время я читаю документацию, написанную другим, и я в замешательстве. Многие из них касаются многопоточной синхронизации, которая была реализована в проекте, для которого написана эта документация.Необъяснимый образец

В этом проекте этот программист реализовал несколько классов, которые управляют критическими разделами, которые используются во всем приложении.

Его просто куча классов, которые отслеживают, какой поток имеет какой критический раздел и является оболочкой вокруг собственной структуры Win32 CRITICAL_SECTION.

Тогда есть классы, заканчивающиеся на -Visit, которые фактически используются в приложении и будут проверять, был ли критический раздел введен в поток уже до его ввода.

Этот программист называет его «шаблоном проектирования комплектования», мне было интересно, существует ли такой шаблон, и может ли это быть названо чем-то другим, чем его называет этот программист, поскольку я не могу найти шаблон под этим именем в любом месте ?

Я знаю, что не очень подробно, но это примерно так же подробно, как я могу зайти.

+2

В разработке программного обеспечения есть какое-то правило, что шаблоны проектирования должны быть такими же неопределенными и контринтетизированными, как возможно;) Шаблоны посетителей, фабрики, адаптера, композитных материалов, шаблонов, мухи и состояний? Можно также назвать их красным рисунком, синим рисунком, зеленым рисунком, желтым и т. Д. Имена не означают ничего, если вы уже не знакомы с деталями реализации. – Juliet

+0

@Juliet, названия общих паттернов поймали не потому, что какой-то стандартный комитет где-то решил, что они должны использоваться с этого момента, а просто потому, что многие люди считают их интуитивными и описательными, поэтому они начали их использовать. Из того, что я помню (из книги GoF и в других местах), у большинства моделей есть несколько названий, поэтому была определенная конкуренция терминов, и естественный выбор отсортировал лучшие. –

+0

@Juliet, конечно, не все имена прекрасны, но я лично думаю, что можно передать грубую идею, например. фабрику или адаптер, не зная всех подробных подробностей. В любом случае, если вы думаете, что у вас есть лучшее имя для любого шаблона, не стесняйтесь евангелизировать его :-) –

ответ

0

Когда я реализовывал классы, как это, его цель следующим образом:

  • Оберните O/S примитивов (например, критические секции)
  • Войти их использование
  • Detect deadly embrace, прослеживая какие нити принадлежат, которые блокируются, и испытывают смертельное объятие, прежде чем приобретать каждую блокировку.
  • Прибор для прогнозирования и, следовательно, избежания смертельного объятия путем отслеживания последовательности, в которой блокировки были получены потоками (например, lockA, за которым следует loc kB), помня это как «обычную последовательность», а затем предупреждая, что нить когда-либо приобретала блокировки в не-обычной последовательности (например, lockB, за которым следует lockA).
Смежные вопросы