cpp-ipc(libipc) - C++ IPC 라이브러리
Linux/Windows에서 공유 메모리를 사용하는 고성능 프로세스 간 통신 라이브러리입니다.
- C++17을 지원하는 컴파일러를 권장합니다(msvc-2017/gcc-7/clang-4).
- STL을 제외한 다른 종속성은 없습니다.
- 잠금 장치가 없거나 가벼운 스핀 잠금 장치만 사용됩니다.
- 밑줄 데이터 구조로 원형 배열이 사용됩니다.
-
ipc::route
단일 읽기와 다중 쓰기를 지원합니다. ipc::channel
다중 읽기 및 쓰기를 지원합니다. ( 참고: 현재 채널은 최대 32명의 수신자를 지원하지만 발신자에는 제한이 없습니다. ) - 브로드캐스트는 기본적으로 사용되지만 사용자는 읽기/쓰기 조합을 선택할 수 있습니다.
- 오랫동안 기다리지 마세요. (세마포어는 일정 횟수의 재시도 후에 사용됩니다.)
- Vcpkg 설치 방식이 지원됩니다. 예:
vcpkg install cpp-ipc
용법
참조: 위키
성능
환경 | 값 |
---|
장치 | 레노버 씽크패드 T450 |
CPU | 인텔® 코어™ i5-4300U @ 2.5GHz |
숫양 | 16GB |
OS | 윈도우 7 얼티밋 x64 |
컴파일러 | MSVC 2017 15.9.4 |
단위 및 벤치마크 테스트: 테스트
성능 데이터:performance.xlsx
참조
- 잠금 없는 데이터 구조 | 돕 박사의
- 잠금이 없는 순환 배열 큐의 또 다른 구현 | 코드프로젝트
- 잠금장치 없는 잠금장치 | 匠心十年 - 博客园
- 无锁队列的实现 | 酷 壳 - CoolShell
- 세마포어를 사용하여 조건 변수 구현
使用共享内存的跨平台(Linux/Windows,x86/x64/ARM)고성능 IPC 통신유저
- 推荐支持C++17의 编译器(msvc-2017/gcc-7/clang-4)
- 除STL외,无其他依赖
- 无锁(lock-free)或轻weight级spin-lock
- 底层数据结构为循环数组(원형 배열)
-
ipc::route
支持单写多读, ipc::channel
支持多写多读 - 默认采用广播模式收发数据,支持用户任意选择读写方案
- 不会长时间忙等(重试一定次数后会使用信号weight进行等待),支持超时
- 支持Vcpkg方式安装,如
vcpkg install cpp-ipc
사용 방법
출처: Wiki
性能
环境 | 值 |
---|
设备 | ThinkPad T450 개요 |
CPU | 영국特尔® Core™ i5-4300U @ 2.5GHz |
内存 | 16GB |
操작품系统 | 윈도우 7 얼티밋 x64 |
编译器 | MSVC 2017 15.9.4 |
单元测试과 Benchmark测试: 테스트
性能数据: 성과.xlsx
参考
- 잠금 없는 데이터 구조 | 돕 박사의
- 잠금이 없는 순환 배열 큐의 또 다른 구현 | 코드프로젝트
- 잠금장치 없는 잠금장치 | 匠心十年 - 博客园
- 无锁队列的实现 | 酷 壳 - CoolShell
- 세마포어를 사용하여 조건 변수 구현