단일 프로세스에서 MMF를 이용하여 시스템 캐시를 메모리에 맵핑하고 맵핑된 메모리를 공유메모리 처럼 사용하는 예제 입니다
기본 타입에 대한 typedef가 되어있습니다. 이해가 안가시는 부분은 댓글 달아주세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | #include "pch.h" #include <iostream> #include "3vmw9.hpp" using namespace std; using namespace rv2; mutx::t mut; b::t writer() { hnd::t hMemoryMap = (hnd::t)0xFFFFFFFF; y::p pMemoryMap = NULL; s::t data = "hello mmf..!"; y::p yhdr = nil; z::t size = yHdr_s(yhdr, data); hMemoryMap = CreateFileMapping(hMemoryMap, NULL, PAGE_READWRITE, 0, size, L"mmf_server"); if (!hMemoryMap) { MessageBox(NULL, L"failed createFileMaping", L"error", MB_OK); return FALSE; } pMemoryMap = (y::p)MapViewOfFile(hMemoryMap, FILE_MAP_ALL_ACCESS, 0, 0, 0); if (!pMemoryMap) { CloseHandle(hMemoryMap); MessageBox(NULL, L"failed mapViewofFile", L"error", MB_OK); return FALSE; } mut.lock(); memcpy(pMemoryMap, yhdr, size); mut.unlock(); while (true) if (_kbhit()) break; if (pMemoryMap) UnmapViewOfFile(pMemoryMap); if (hMemoryMap) CloseHandle(hMemoryMap); return true; } b::t reader(){ hnd::t hMemoryMap = NULL; y::p pMemoryMap = nil; s::t data = ""; y::p yhdr = nil; hMemoryMap = OpenFileMapping(FILE_MAP_READ, FALSE, L"mmf_server"); if (!hMemoryMap) { MessageBox(NULL, L"OpenFileMapping", L"error", MB_OK); return FALSE; } pMemoryMap = (y::p)MapViewOfFile(hMemoryMap, FILE_MAP_READ, 0, 0, 0); yhdr = pMemoryMap; co_s(s_yHdr(yhdr)); while(true) if (_kbhit()) break; if (pMemoryMap) UnmapViewOfFile(pMemoryMap); if (hMemoryMap) CloseHandle(hMemoryMap); return true; } int main() { thr::t th01(writer); thr::t th02(reader); co_s("end main()..."); th01.join(); th02.join(); return 0; } | cs |
end main()...
hello mmf..!
'IPC(Pipe, Shared Mem)' 카테고리의 다른 글
c/python ipc 구현 블로그 (0) | 2019.01.31 |
---|---|
python 헤더 정의 (0) | 2019.01.31 |
python windows pipe server and client 예제 (0) | 2019.01.31 |
c++ windows pipe client , server예제 (0) | 2019.01.31 |
Windows API를 통해 심플한 MMF(Memory Mapped File) 구현 (0) | 2019.01.26 |