DELPHI MUTEX ПРИМЕР

Синхронизация потоков в Delphi осуществляется с помощью мьютексов. Мьютексы являются примитивами синхронизации, которые позволяют ограничивать доступ потоков к разделяемым ресурсам.

Пример создания мьютекса:

var
Mutex: THandle;
begin
Mutex := CreateMutex(nil, False, 'MyMutex');
if Mutex <> 0 then
begin
try
// Критическая секция
finally
ReleaseMutex(Mutex);
end;
end;
end;

В данном примере создается мьютекс со строковым именем "MyMutex". Для входа в критическую секцию поток должен вызвать функцию WaitForSingleObject, передав ей дескриптор мьютекса в качестве параметра. После того, как поток закончит работу с разделяемыми ресурсами, он должен вызвать функцию ReleaseMutex для освобождения мьютекса.

Пример использования мьютекса для защиты доступа к файлу:

var
Mutex: THandle;
begin
Mutex := CreateMutex(nil, False, 'FileMutex');
if Mutex <> 0 then
begin
try
if WaitForSingleObject(Mutex, INFINITE) <> WAIT_OBJECT_0 then
RaiseLastOSError;
try
// Работа с файлом
finally
ReleaseMutex(Mutex);
end;
finally
CloseHandle(Mutex);
end;
end;
end;

В данном примере создается мьютекс со строковым именем "FileMutex". Для защиты доступа к файлу несколькими потоками необходимо использовать один и тот же дескриптор мьютекса во всех потоках.

C++ : mutex lock priority

Co potrafi chińskie Delphi w Mercedesie vs Star-Diagnosis

Delphi Tutorial #111 - Using TGridPanel to control proportional layouts

C++ : C++ mutex and const correctness

C++ : Spinlock vs std::mutex::try_lock

C++ : Calling std::lock () with std::vector mutex*

Delphi #175 - TVirtualImageList and TImageCollection

C++ : To Mutex or Not To Mutex?

C# : Usage of Mutex in c#

Windows : IPC connection with thread on Windows using Mutex

Реклама
Новое
Реклама