Windows 7에서 가장 빠른 IPC 방법
Windows 7에서 가능한 가장 빠른 IPC(Interprocess Communication) 방법은 무엇입니까?메모리 블록(양방향)만 공유하려고 합니다.
그런가요?ReadProcessMemory
아니면 다른 것?우리는 플레인을 사용하고 싶습니다.C
그러나 예를 들어, Boost 라이브러리는 IPC에 무엇을 사용합니까?
ReadProcessMemory
IPC 방법으로 나열되어서는 안 됩니다. 네, 그렇게 사용될 수 있지만 주로 디버깅 목적으로 존재합니다(참조를 확인하면 "디버깅 기능" 범주에 속합니다). 그리고 프로세스의 메모리를 지정된 버퍼에 복사하기 때문에 "실제" 공유 메모리보다 확실히 느립니다.실제 공유 메모리에는 이러한 오버헤드가 없습니다.
Windows에서 지원하는 IPC 방법의 전체 목록은 MSDN에서 사용할 수 있습니다. 하지만 메모리 블록을 공유하려는 응용 프로그램이 두 개뿐인 경우에는 이름이 지정된 메모리 매핑 파일(페이징 파일로 백업됨)을 만들어야 합니다.CreateFileMapping
/MapViewOfFile
그것이 가장 간단하고 빠른 방법일 것입니다.파일 매핑에 대한 자세한 내용은 MSDN 페이지에 설명되어 있습니다.
관련 Boost IPC 클래스는 공유 메모리 주변에서 얇은 래퍼 역할을 할 수 있으며, AFAIK는 관련 시스템별 API에 대한 호출만 캡슐화하지만, 결국 공유 메모리 블록에 대한 일반적인 포인터를 얻을 수 있으므로 운영은 네이티브 API를 사용하는 것만큼 빨라야 합니다.
그렇기 때문에 Boost를 사용하는 것이 좋습니다.프로세스 간에 C++에 친화적이며(RAII 의미를 제공함) 공유 메모리 블록이 생성된 후 성능 저하를 초래하지 않습니다(공유 메모리에 추가 기능을 제공할 수 있지만 모두 옵트인 방식입니다). 공유 메모리를 원할 경우 바로 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7127242/fastest-ipc-method-on-windows-7
'programing' 카테고리의 다른 글
VBA에 범위가 있는지 테스트합니다. (0) | 2023.08.13 |
---|---|
VBA 배열의 첫 번째 요소 제거 (0) | 2023.08.13 |
WSDL 파일에서 ASMX 웹 서비스 만들기 (0) | 2023.08.13 |
SqlConnection 또는 OracleConnection 대신 DbConnection을 사용하는 것이 어떻습니까? (0) | 2023.08.08 |
mysql workbench 열 아이콘의 의미 (0) | 2023.08.08 |