C++ 如何在客户机-服务器应用程序的共享内存中获取事件

C++ 如何在客户机-服务器应用程序的共享内存中获取事件,c++,client-server,shared-memory,C++,Client Server,Shared Memory,我正在尝试为我的客户机-服务器应用程序使用共享内存。我使用文件映射的概念。服务器将使用CreateFileMappingAPI创建文件映射。然后它将使用MapViewOfFile和copymemory api为共享空间进行复制 客户端将打开相同的文件映射并从共享空间读取。 代码运行良好,但根据我的要求,服务器将持续放置数据,客户端将读取数据 我需要帮助,如果我使用,而根据下面的代码,它正在工作,但占用了大约90%的巨大CPU周期 这是我的客户代码: while (1) { pBuf =

我正在尝试为我的客户机-服务器应用程序使用共享内存。我使用文件映射的概念。服务器将使用CreateFileMappingAPI创建文件映射。然后它将使用
MapViewOfFile
和copymemory api为共享空间进行复制

客户端将打开相同的文件映射并从共享空间读取。 代码运行良好,但根据我的要求,服务器将持续放置数据,客户端将读取数据

我需要帮助,如果我使用
,而根据下面的代码,它正在工作,但占用了大约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;
}

您需要跨服务器和客户端同步写入和读取操作,而不是在不需要的读取中浪费CPU时间

考虑使用命名的手动重置事件(CreateEvent)和WaitForSingleObject在进程间的while循环中同步写入和读取