Я создаю приложение, которое реализует взаимодействие между процессами. Для этого я создал общий буфер, который, кажется, работает нормально. Теперь мне нужно, чтобы приложение для генерации данных (написано на C++) , чтобы сообщить приложению приема данных (написано на freepascal/lazarus) , когда оно должно прочитать данные.Win32 Mutex не ждет
Я пытался использовать мьютекс для этой цели. У меня не так много опыта программирования windows api.
Итак, моя проблема заключается в том, что в коде FreePascal ниже мьютексы не будут ждать. Я могу вызвать функцию TMutex.Wait(), она не возвращает ошибку или что-то еще, но она просто не будет ждать.
конструктор TMutex.Create (sName: AnsiString);
начало
sName: = 'Local \ Mutex' + sName;
hMutex: = CreateMutexA (
ноль, // по умолчанию доступ
Правда, // изначально не принадлежит
PChar (sName)); // с именем мьютекс
если hMutex = 0, то
начинают
поднять Exception.Create ('создание мьютекс не удалось');
конец;
конец;
деструктор TMutex.Destroy;
начало
CloseHandle (hMutex);
конец;
процедура TMutex.Wait;
начинают
если (WaitForSingleObject (hMutex, INFINITE) <> 0), то ShowMessage ('отладки: ждать возвращенное что-то');
конец;
процедура TMutex.После;
начало
ReleaseMutex (hMutex);
конец;
Именованные каналы были изобретены для этой цели: IPC - через общую память - с помощью удобного API-интерфейса на основе ReadFile/WriteFile –