공유 메모리는 메모리 매핑 파일(Memory-Mapped File)을 사용하여 데이터를 교환하는 것이다. 메모리 매핑 파일은 하드디스크가 아니라 램에 파일을 만들어 데이터를 고속으로 송수신할 수 있다.
C++에서 메모리 매핑 파일을 만들고 만들어진 메모리 매핑 파일을 C#에서 읽는 방법은 다음과 같다.
C++
C++에서 메모리 매핑 파일은 다음과 같이 사용한다.
다음과 같이 파일을 만든다. 파일 이름은 DataName이다.
byte *p;
HANDLE handle;
handle = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, sizeof(Pair), L"DataName");
p = (byte*) MapViewOfFile(handle, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 1000);
파일에 데이터를 쓴다.
memcpy(p, data, 1000);
종료할 때는 다음과 같이 핸들을 해제한다.
if (handle != NULL) CloseHandle(handle);
C#
C#에서 메모리 매핑 파일을 읽는 방법은 다음과 같다. 파일 이름이 DataName으로 같아야 한다.
public static MemoryMappedFile mmf;
public static MemoryMappedViewStream mmfvs;
mmf = MemoryMappedFile.OpenExisting("DataName");
mmfvs = mmf.CreateViewStream();
mmfvs.Read(buf, 0, 1000);
'컴퓨터 > C#' 카테고리의 다른 글
C# 다른 프로그램 창 보이기 (0) | 2022.05.26 |
---|---|
C#에서 sscanf와 비슷한 기능 (0) | 2022.05.23 |
C# 배열 메모리 할당/해제 (0) | 2022.05.04 |
C# 주석 색깔 변경 (0) | 2022.05.04 |
C# unsafe 컴파일 옵션 (0) | 2022.05.04 |
댓글