プロセス間通信を実装するアプリケーションを作成しています。この目的のために、私は共有バッファを設定しました。これは正常に機能しているようです。ここで、データ生成アプリケーション (c++ で記述) がデータ受信アプリケーション (freepascal/lazarus で記述) にいつデータを読み取る必要があるかを伝える方法が必要です。
この目的のためにミューテックスを使用しようとしていました。Windows API プログラミングの経験はあまりありません。
したがって、私の問題は、以下の FreePascal コードでは、ミューテックスが待機しないことです。TMutex.Wait() 関数を呼び出すことができます。エラーなどは返されませんが、単に待機しません。
コンストラクタ TMutex.Create(sName: AnsiString);
sNameを開始し
ます:= 'Local\Mutex'+sName;
hMutex := CreateMutexA(
nil, // デフォルト アクセス
True, // 最初は所有されていない
PChar(sName)); // 名前付きミューテックス
hMutex = 0 の場合は、例外の発生を
開始します。Create
('mutex の作成に失敗しました');
終わり;
終わり;
デストラクタ TMutex.Destroy; CloseHandle(hMutex)
を開始します。 終わり; 手順 TMutex.Wait; begin if (WaitForSingleObject(hMutex, INFINITE) <> 0) then ShowMessage('debug: 何かが返されるのを待つ'); 終わり;
手順 TMutex.Post; ReleaseMutex(hMutex)
を開始します。 終わり;