Работа с мютекси в OOP стил (Delphi, TMutex), Стрелец Кодер

Mutex механизмът е проектиран да гарантира, че не повече от една нишка може да работи едновременно с ресурс.

Има два начина за работа с мютекси в Delphi.

  1. Използването на "обичайно" ниско ниво (WinAPI) функции (CreateMutex и др.).
    Този метод работи в почти всички версии, отдавна е овладян от програмисти и не се нуждае от допълнително описание (има повече от достатъчно материали по тази тема в Delphi в Интернет). Нека го наречем „класическия начин“;
  2. Използване на класTMutex.
    Този клас се появи за първи път във версията XE. Той осигурява опростен интерфейс за работа с мютекси и почти напълно елиминира необходимостта от използване на функции на ниско ниво при работа с тях.

Помислете за втория начин.

Класът TMutex е описан в модула System.SyncObjs. Неговият конструктор има три претоварвания.

Най-предпочитаното претоварване за създаване на мютекс е:

  • Първият параметър (TSecurityAttributes) е указател за записване на атрибути на защитата (в най-простия случай е разрешено нула).
  • Вторият параметър (Boolean) определя дали нишката, създала мутекса, ще стане негов собственик;
  • Третият параметър (String) е уникалното име на мютекса.
  • Четвъртият параметър (Boolean) е способността на mutex да работи с COM компоненти на STA (апартамент с една нишка). Този параметър е по избор и по подразбиране е false.