cpp-ipc (libipc) - Biblioteca C++ IPC
Una biblioteca de comunicación entre procesos de alto rendimiento que utiliza memoria compartida en Linux/Windows.
- Se recomiendan compiladores compatibles con C++17 (msvc-2017/gcc-7/clang-4)
- No hay otras dependencias excepto STL.
- Sólo se utiliza spin-lock ligero o sin bloqueo.
- La matriz circular se utiliza como estructura de datos subrayada.
-
ipc::route
admite lectura única y escritura múltiple. ipc::channel
admite múltiples lecturas y escrituras. ( Nota: actualmente, un canal admite hasta 32 receptores, pero no existe tal límite para el remitente). - La transmisión se utiliza de forma predeterminada, pero el usuario puede elegir cualquier combinación de lectura/escritura.
- No hay que esperar mucho tiempo a ciegas. (El semáforo se utilizará después de una cierta cantidad de reintentos).
- Se admite la forma de instalación de Vcpkg. Por ejemplo,
vcpkg install cpp-ipc
Uso
Ver: Wiki
Actuación
Ambiente | Valor |
---|
Dispositivo | Lenovo ThinkPad T450 |
UPC | Intel® Core™ i5-4300U a 2,5 GHz |
RAM | 16GB |
SO | Windows 7 último x64 |
Compilador | MSVC 2017 15.9.4 |
Pruebas unitarias y de referencia: prueba
Datos de rendimiento: rendimiento.xlsx
Referencia
- Estructuras de datos sin bloqueo | Dr. Dobb
- Otra implementación más de una cola de matriz circular sin bloqueos | Proyecto de código
- 编程 sin bloqueo | 匠心十年 - 博客园
- 无锁队列的实现 | 酷 壳 - CoolShell
- Implementación de variables de condición con semáforos
使用共享内存的跨平台(Linux/Windows,x86/x64/ARM)高性能IPC通讯库
- 推荐支持C++17的编译器(msvc-2017/gcc-7/clang-4)
- 除STL外,无其他依赖
- 无锁(lock-free)或轻量级spin-lock
- 底层数据结构为循环数组 (matriz circular)
-
ipc::route
支持单写多读, ipc::channel
支持多写多读【注意:目前同一条通道最多支持32个receiver,sender无限制】 - 默认采用广播模式收发数据,支持用户任意选择读写方案
- 不会长时间忙等(重试一定次数后会使用信号量进行等待),支持超时
- 支持Vcpkg方式安装,如
vcpkg install cpp-ipc
使用方法
Traducción: Wiki
性能
环境 | 值 |
---|
设备 | Descripción del ThinkPad T450 |
UPC | Tarjeta madre® Core™ i5-4300U @ 2,5 GHz |
内存 | 16GB |
操作系统 | Windows 7 último x64 |
编译器 | MSVC 2017 15.9.4 |
单元测试和Benchmark测试: prueba
Descripción general: performance.xlsx
参考
- Estructuras de datos sin bloqueo | Dr. Dobb
- Otra implementación más de una cola de matriz circular sin bloqueos | Proyecto de código
- 编程 sin bloqueo | 匠心十年 - 博客园
- 无锁队列的实现 | 酷 壳 - CoolShell
- Implementación de variables de condición con semáforos