2019-01-01 16:26:51 +08:00
build cmake 2019-01-01 16:26:22 +08:00
include using ipc::buffer instead of std::vector<byte_t> 2018-12-31 22:22:54 +08:00
src using ipc::buffer instead of std::vector<byte_t> 2018-12-31 22:22:54 +08:00
test using ipc::buffer instead of std::vector<byte_t> 2018-12-31 22:22:54 +08:00
.gitignore first commit for shm. 2018-11-20 11:27:39 +08:00
.travis.yml Merge branch 'master' of https://github.com/mutouyun/cpp-ipc 2019-01-01 16:26:51 +08:00
LICENSE Update LICENSE 2018-12-27 17:01:44 +08:00
README.md update performance data 2019-01-01 11:41:47 +08:00

cpp-ipc - C++ IPC Library

MIT licensed Build Status

A high-performance inter-process communication using shared memory on Linux/Windows.
使用共享内存的跨平台Linux/Windowsx86/x64/ARM高性能IPC通讯库。

  • 需要支持C++17的编译器msvc-2017/gcc-7/clang-4
  • 除STL外无其他依赖
  • 无锁lock-free或轻量级shared-spin-lockipc::channel::connect/disconnect
  • 底层数据结构为循环数组circular array
  • ipc::route支持单生产多消费,ipc::channel支持多生产多消费

Performance

Environment Value
CPU AMD Ryzen™ 5 1400 Quad-Core
RAM 32 GB
OS Windows 10 Pro for Education x64
Compiler MSVC 2017 15.9.4 x64

UT & benchmark test function, see: test

ipc::circ::queue

PROD-CONS: 1-N DATAS: 12bits * 1000000
1-1 47.4050 ms, 0.047405 us/d
1-2 113.793 ms, 0.113793 us/d
1-4 319.196 ms, 0.319196 us/d
1-8 225.258 ms, 0.225258 us/d

ipc::route

PROD-CONS: 1-N DATAS: Random 2-256bits * 100000
RTT 103.280 ms, 1.03280 us/d
1-1 78.6670 ms, 0.78667 us/d
1-2 165.601 ms, 1.65601 us/d
1-4 223.183 ms, 2.23183 us/d
1-8 246.161 ms, 2.46161 us/d

ipc::channel

PROD-CONS: N-M DATAS: Random 2-256bits * 100000
RTT 184.711 ms, 1.84711 us/d
1-1 122.186 ms, 1.22186 us/d
1-2 226.518 ms, 2.26518 us/d
1-4 369.239 ms, 3.69239 us/d
1-8 620.199 ms, 6.20199 us/d
2-1 287.960 ms, 1.43980 us/d
4-1 542.050 ms, 1.35512 us/d
8-1 1406.61 ms, 1.75826 us/d
2-2 475.095 ms, 2.37547 us/d
4-4 1455.05 ms, 3.63763 us/d
8-8 5485.06 ms, 6.85633 us/d

Reference