File: README.md

package info (click to toggle)
dolphin-emu 2512%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 76,328 kB
  • sloc: cpp: 499,023; ansic: 119,674; python: 6,547; sh: 2,338; makefile: 1,093; asm: 726; pascal: 257; javascript: 183; perl: 97; objc: 75; xml: 30
file content (82 lines) | stat: -rwxr-xr-x 4,521 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# cpp-ipc (libipc) - C++ IPC Library

[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/mutouyun/cpp-ipc/blob/master/LICENSE)
[![Build Status](https://github.com/mutouyun/cpp-ipc/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/mutouyun/cpp-ipc/actions)
[![CodeCov](https://codecov.io/github/mutouyun/cpp-ipc/graph/badge.svg?token=MNOAOLNELH)](https://codecov.io/github/mutouyun/cpp-ipc)
[![Build status](https://ci.appveyor.com/api/projects/status/github/mutouyun/cpp-ipc?branch=master&svg=true)](https://ci.appveyor.com/project/mutouyun/cpp-ipc)
[![Vcpkg package](https://img.shields.io/badge/Vcpkg-package-blueviolet)](https://github.com/microsoft/vcpkg/tree/master/ports/cpp-ipc)

## A high-performance inter-process communication library using shared memory on Linux/Windows/FreeBSD.

 * Compilers with C++17 support are recommended (msvc-2017/gcc-7/clang-4)
 * No other dependencies except STL.
 * Only lock-free or lightweight spin-lock is used.
 * Circular array is used as the underline data structure.
 * `ipc::route` supports single write and multiple read. `ipc::channel` supports multiple read and write. (**Note: currently, a channel supports up to 32 receivers, but there is no such a limit for the sender.**) 
 * Broadcasting is used by default, but user can choose any read/ write combinations.
 * No long time blind wait. (Semaphore will be used after a certain number of retries.) 
 * [Vcpkg](https://github.com/microsoft/vcpkg/blob/master/README.md) way of installation is supported. E.g. `vcpkg install cpp-ipc`

## Usage

See: [Wiki](https://github.com/mutouyun/cpp-ipc/wiki)

## Performance

 Environment | Value
 ------ | ------
 Device | Lenovo ThinkPad T450
 CPU | Intel® Core™ i5-4300U @ 2.5 GHz
 RAM | 16 GB
 OS | Windows 7 Ultimate x64
 Compiler | MSVC 2017 15.9.4

Unit & benchmark tests: [test](test)  
Performance data: [performance.xlsx](performance.xlsx)

## Reference

 * [Lock-Free Data Structures | Dr Dobb's](http://www.drdobbs.com/lock-free-data-structures/184401865)
 * [Yet another implementation of a lock-free circular array queue | CodeProject](https://www.codeproject.com/Articles/153898/Yet-another-implementation-of-a-lock-free-circular)
 * [Lock-Free 编程 | 匠心十年 - 博客园](http://www.cnblogs.com/gaochundong/p/lock_free_programming.html)
 * [无锁队列的实现 | 酷 壳 - CoolShell](https://coolshell.cn/articles/8239.html)
 * [Implementing Condition Variables with Semaphores](https://www.microsoft.com/en-us/research/wp-content/uploads/2004/12/ImplementingCVs.pdf)

------


## 使用共享内存的跨平台(Linux/Windows/FreeBSD,x86/x64/ARM)高性能IPC通讯库

 * 推荐支持C++17的编译器(msvc-2017/gcc-7/clang-4)
 * 除STL外,无其他依赖
 * 无锁(lock-free)或轻量级spin-lock
 * 底层数据结构为循环数组(circular array)
 * `ipc::route`支持单写多读,`ipc::channel`支持多写多读【**注意:目前同一条通道最多支持32个receiver,sender无限制**】
 * 默认采用广播模式收发数据,支持用户任意选择读写方案
 * 不会长时间忙等(重试一定次数后会使用信号量进行等待),支持超时
 * 支持[Vcpkg](https://github.com/microsoft/vcpkg/blob/master/README_zh_CN.md)方式安装,如`vcpkg install cpp-ipc`

## 使用方法

详见:[Wiki](https://github.com/mutouyun/cpp-ipc/wiki)

## 性能

| 环境     | 值                               |
| -------- | -------------------------------- |
| 设备     | 联想 ThinkPad T450               |
| CPU      | 英特尔® Core™ i5-4300U @ 2.5 GHz |
| 内存     | 16 GB                            |
| 操作系统 | Windows 7 Ultimate x64           |
| 编译器   | MSVC 2017 15.9.4                 |

单元测试和Benchmark测试: [test](test)  
性能数据: [performance.xlsx](performance.xlsx)

## 参考

 * [Lock-Free Data Structures | Dr Dobb's](http://www.drdobbs.com/lock-free-data-structures/184401865)
 * [Yet another implementation of a lock-free circular array queue | CodeProject](https://www.codeproject.com/Articles/153898/Yet-another-implementation-of-a-lock-free-circular)
 * [Lock-Free 编程 | 匠心十年 - 博客园](http://www.cnblogs.com/gaochundong/p/lock_free_programming.html)
 * [无锁队列的实现 | 酷 壳 - CoolShell](https://coolshell.cn/articles/8239.html)
 * [Implementing Condition Variables with Semaphores](https://www.microsoft.com/en-us/research/wp-content/uploads/2004/12/ImplementingCVs.pdf)