M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Взаимные исключения

    Объект типа взаимное исключение (mutex) позволяет только одному потоку в данное время владеть им. Если продолжать аналогии, то этот объект можно сравнить с эстафетной палочкой.

    Класс, инкапсулирующий взаимное исключение, — TMutex — находится в модуле IPCTHRD.PAS (пример IPCDEMOS). Конструктор:

    constructor Create (const Name: string);

    задает имя создаваемого объекта. Первоначально он не принадлежит никому. (Но функция API createMutex, вызываемая в нем, позволяет передать созданный объект тому потоку, в котором это произошло.) Далее метод

    function Get(TimeOut: Integer): Boolean;

    производит попытку в течение Timeout миллисекунд завладеть объектом (в этом случае результат равен True). Если объект более не нужен, следует вызвать метод

    function Release: Boolean;

    Программист может использовать взаимное исключение, чтобы избежать считывания и записи общей памяти несколькими потоками одновременно.