同步操作将从 zoombeer/ipc 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
IPC
基于linux的进程间通讯库函数和守护进程。
特性
提供日志,资源锁,共享内存,进程间消息等组件
文档
用法 构建IPC时会生成动态库和可执行文件,默认(定义在make.defines)在/usr/local/lib/安装动态库,在/usr/local/bin安装可执行文件。你可以修改这两个安装目录,确保你的可执行文件能找到IPC编译的动态库即可。通常情况下你只需要执行sudo ldconfig即可
demo的test.sh展示了例子的用法。你可以任意修改。
限制1:所有的demo共用System V IPC 不支持多个demo同时测试,
限制2:demo中的server会启动System V IPC,有一定的概率,client先于server运行而导致测试失败,有两个办法可以避免
A:通过更改server的写法,使用fork + setsid + sleep 确保server已经建立了ipc之后再运行client,或者通过共享内存标志位来判断,这2个办法不是特别优雅
B:通过2个session来,在一个session运行server之后,另外一个session运行client,
设计策略: 1:使用了system V IPC, 计划添加posix IPC 2:lock和share memory并没有解耦,选择了通过共享内存来记录lock的状态,如果不需要lock的状态,可以把lock和sharememory解耦 3:降低复杂度,进程之间message采用一收一发的模式,不支持A进程到B进程的多发多收 ,支持A进程到B,C,D...的进程的多发多收
测试记录:
ubuntu14.04;ubuntu12.04;fedora20
cat /proc/version
1:Linux version 3.19.0-25-generic (buildd@lgw01-57) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #2614.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015
2:Linux version 3.13.0-32-generic (buildd@phianna) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #57precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014
3: Linux version 3.11.10-301.fc20.i686+PAE (mockbuild@bkernel02) (gcc version 4.8.2 20131017 (Red Hat 4.8.2-1) (GCC) ) #1 SMP Thu Dec 5 14:12:06 UTC 2013
TODO: 1:timer动态内存管理改成静态管理,优化timer算法 2:lock添加上timeout选项 3:message多发多收 4:添加posix IPC
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。