クライアントサーバーアプリケーションに共有メモリを使用しようとしています。私はそれのためのファイルマッピングの概念を使用しています。サーバーはCreateFileMapping APIを使用してファイルマップを作成します。次に、MapViewOfFile
とcopymemory apiを使用して共有スペースをコピーします。クライアント/サーバーアプリケーションで共有メモリのイベントを取得する方法
クライアントは、同じファイルマッピングと共有スペースからの読み取りを開きます。 コードは正常に動作していますが、私の要件に応じてサーバーはデータを連続して入れ、クライアントはデータを読み込みます。
while
を以下のコードで使用している場合は助けが必要ですが、CPU使用率は約90%です。あなたが書き込みを同期して、サーバーとクライアントの代わりに、不要な読み取りにCPU時間を無駄に全体で読み取り操作をする必要が
while (1)
{
pBuf = (WCHAR *)MapViewOfFile(hMapFile, // handle to map object
FILE_MAP_ALL_ACCESS, // read/write permission
0,
0,
1024);
if (pBuf == NULL)
{
printf("Could not map view of file (%d) \n", GetLastError());
//CloseHandle(hMapFile);
getchar();
return 1;
}
if (wcslen(pBuffCheck) == 0)
{
wcscpy(pBuffCheck, pBuf);
//printf("\n File From the Server Found %ls", pBuffCheck);
}
else
{
if (wcscmp(pBuf, pBuffCheck) != 0)
{
wcscpy(pBuffCheck, pBuf);
printf("\n File Path %ls", pBuffCheck);
}
}
UnmapViewOfFile(pBuf);
//CloseHandle(hMapFile);
pBuf = NULL;
}