2016-10-06 32 views
0

私は、メモリマップされたファイルを使用して、Windows(C++)の複数のプロセス間でデータを共有するDLLを持っています。相互にデータを読み書きするプロセスは、ウィンドウハンドルをDLLで登録します。そのうちの1人が共有にデータを入れると、他の人に通知されます。どのプロセスでも、DLLを介してデータを読み書きできます。複数のプロセスからのshared-mem DLLへの同時アクセス

通知が完了するまで、プロセスが共有メモリに書き込むのを防ぎ、複数のプロセスが同時に書き込みをしないようにしたいと思っています。「グローバルミューテックス」が必要ですが、そんなことはありますか?

ありがとうございました。

答えて

0

"virtuallock" WinAPI関数を使用します。

入力は、マップされたメモリポインタとマップされたメモリサイズです。あなたは(あなたのビジネス要件に基づいて)したいとき、それについての詳細を理解するために、

をメモリをunclockするVirtualUnlockを持っている

BOOL WINAPI VirtualLock(
    _In_ LPVOID lpAddress, 
    _In_ SIZE_T dwSize 
); 

、WINAPIのドキュメントを参照してください。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895(v=vs.85).aspx

+0

VirtualLock()はメモリがページアウトされないようにします。他のスレッドがそのスレッドにアクセスすることを妨げません。 – jilles

関連する問題