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
การใช้งาน
ดู: วิกิ
ผลงาน
สิ่งแวดล้อม | ค่า |
---|
อุปกรณ์ | เลอโนโว ThinkPad T450 |
ซีพียู | Intel® Core™ i5-4300U @ 2.5 GHz |
แรม | 16GB |
ระบบปฏิบัติการ | วินโดวส์ 7 อัลติเมท x64 |
คอมไพเลอร์ | MSVC 2017 15.9.4 |
การทดสอบหน่วยและเกณฑ์มาตรฐาน: การทดสอบ
ข้อมูลประสิทธิภาพ: Performance.xlsx
อ้างอิง
- โครงสร้างข้อมูลที่ไม่มีการล็อค | ดร.ด็อบบ์
- การใช้งานคิวอาเรย์แบบวงกลมที่ไม่มีการล็อคอีกครั้ง | รหัสโครงการ
- ล็อคฟรี 编程 | 匠heart十年 - 博客园
- 无锁队列的实现 | 酷壳 - CoolShell
- การใช้ตัวแปรเงื่อนไขกับเซมาฟอร์
ดาวน์โหลดไดรเวอร์ IPC ได้ที่ x86/x64/ARM
- คำสั่ง C++17 ดั้งเดิม (msvc-2017/gcc-7/clang-4)
- 除STL外,无其他依赖
- 无锁(ล็อคฟรี)或轻量级หมุนล็อค
- 底层数据结构为循环数组(อาร์เรย์วงกลม)
-
ipc::route
支持单写多读, ipc::channel
支持多写多读【注意:目前同一条通道最多支持32个receiver,sender无限制】 - 默认采用广播模式收发数据,支持用户任意选择读写方案
- 不会长时间忙等(重试一定次数后会使用信号量进行等待),支持超时
- 支持Vcpkg方式安装, และ
vcpkg install cpp-ipc
使用方法
详见:วิกิ
性能
环境 | 值 |
---|
设备 | สำหรับ ThinkPad T450 |
ซีพียู | Intel® Core™ i5-4300U @ 2.5 GHz |
内存 | 16GB |
操作系统 | วินโดวส์ 7 อัลติเมท x64 |
编译器 | MSVC 2017 15.9.4 |
单元测试 และ Benchmark 测试: การทดสอบ
ข้อมูลเพิ่มเติม: Performance.xlsx
参考
- โครงสร้างข้อมูลที่ไม่มีการล็อค | ดร.ด็อบบ์
- การใช้งานคิวอาเรย์แบบวงกลมที่ไม่มีการล็อคอีกครั้ง | รหัสโครงการ
- ล็อคฟรี 编程 | 匠heart十年 - 博客园
- 无锁队列的实现 | 酷壳 - CoolShell
- การใช้ตัวแปรเงื่อนไขกับเซมาฟอร์