StackOverflow のユーザーの皆様、こんにちは。
私は C++ で Win32 API から MapViewOfFile を操作してきましたが、初心者ですが、mapview ファイルのセマフォを作成しようとしていました。すでにコピーされており、メイン インスタンスがそれを読み取っています。
私が思いついたのは、それを行うためのさまざまな方法を作成することでしたが、それを行うための最良の方法を知る必要があります.
1) while ループを使用して mapviewfile が空になるのを待ちます。
私は次のことをしようとしました:
mapViewFile = (LPTSTR) MapViewOfFile(mapView,
FILE_MAP_ALL_ACCESS,0,0,SH_MAX_MEMORY);
if(mapViewFile!=NULL){
// Wait for the mapviewfile to be empty.
while(mapViewFile!=""); // This while is only for delay the operation and wait for the mapviewfile it's empty, we don't need any action in this while.
CopyMemory((PVOID)mapViewFile,defaultalloc,(_tcslen(defaultalloc) * sizeof(TCHAR)));
UnmapViewOfFile(mapViewFile);
}
CloseHandle(mapView);
そのため、mapviewfile が空の場合、while はスキップされ、「セカンダリ」インスタンスがそれにコピーされ、メイン インスタンスがそれを読み取って mapviewfile を空にすると、セマフォが生成されます。
2)ミューテックス
の使用 もう 1 つの方法は、Win32 Api のミューテックスを使用するCreateMutex
ことです。
だから、私の質問は次のとおりです。
- 自分のやりたいことをやるには、どの方法が一番いいですか?(第1段落で説明)
- mapviewfile はこれを行うのに問題はありませんか? (2 つ以上のインスタンスをメイン インスタンスと通信したいことを思い出してください)。
それらは質問です、ありがとう。