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
Использование
См.: Вики
Производительность
Среда | Ценить |
---|
Устройство | Lenovo ThinkPad T450 |
Процессор | Intel® Core™ i5-4300U @ 2,5 ГГц |
БАРАН | 16 Гб |
ОС | Windows 7 Максимальная x64 |
Компилятор | МСВК 2017 15.9.4 |
Модульные и эталонные тесты: тест
Данные о производительности: Performance.xlsx.
Ссылка
- Структуры данных без блокировки | доктора Добба
- Еще одна реализация очереди с кольцевым массивом без блокировок | КодПроект
- Lock-Free 编程 | 匠心十年 - 博客园
- 无锁队列的实现 | 酷壳 - CoolShell
- Реализация переменных состояния с помощью семафоров
使用共享内存的跨平台(Linux/Windows,x86/x64/ARM)高性能IPC通讯库
- Версия C++17 для файлов (msvc-2017/gcc-7/clang-4)
- 除STL外,无其他依赖
- 无锁(без блокировки)或轻量级спин-лок
- 底层数据结构为循环数组(круговой массив)
-
ipc::route
支持单写多读, ipc::channel
支持多写多读【注意:目前同一条通道最多支持32个receiver,sender无限制】 - 默认采用广播模式收发数据, 支持用户任意选择读写方案
- 不会长时间忙等(重试一定次数后会使用信号量进行等待),支持超时
vcpkg install cpp-ipc
使用方法
Источник: Wiki
性能
环境 | 值 |
---|
设备 | Производитель ThinkPad T450 |
Процессор | 英特尔® Core™ i5-4300U @ 2,5 ГГц |
内存 | 16 Гб |
操作系统 | Windows 7 Максимальная x64 |
编译器 | МСВК 2017 15.9.4 |
Тестовый тест: тест
Тип файла: Performance.xlsx.
参考
- Структуры данных без блокировки | доктора Добба
- Еще одна реализация очереди с кольцевым массивом без блокировок | КодПроект
- Lock-Free 编程 | 匠心十年 - 博客园
- 无锁队列的实现 | 酷壳 - CoolShell
- Реализация переменных состояния с помощью семафоров