-
Notifications
You must be signed in to change notification settings - Fork 18
/
readme
24 lines (17 loc) · 1.97 KB
/
readme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
进程间有多种通信方式,常见的包括 socket,共享内存,命名管道等等,最常见的是socket和共享内存,socket应该是用的最多的,
很简单,顺手抄起来就能用,并且移植性很强,如果改为分布式不在同一主机,只需要把配置ip和port修改即可,调试也很方便,
用tcpdump和netstat基本就够调试了,但是从效率上比共享内存要逊色不少,尤其是同一份数据需要发给多个进程时,做了大量重复性
劳动。
共享内存以高效著称,不仅使数据在用户进程和内核传递的次数减少了(共享内存2次,其他IPC4次),在多个进程接收数据时更是
可以大显神威,但是封装这样一个功能模块复杂度要比socket高很多。
这里将共享内存进行了封装,以循环队列的形式供进程进行读写(支持一个进程写,多个进程读,如果是需要多个进程写需要再
实例化一个对象即可),对数据同步进行了精心设计,尽最大努力减少锁冲突,在数据同步的前提下提高读写效率。
将源码贴出来,希望得到交流,研一时写的代码,代码风格和函数抽象层次确实让现在得我不敢苟同,将当时的代码贴出来我
付出了极大地勇气来面对过去的自己。
目前review了下自己的代码,有几个不满意的地方,1 代码风格当时还不稳定 2 接口设计的不是很合理,我会加上类似于tcp的三次
握手类似的接口。 3 阻塞做的不好,起码加个计时器。 4 加上调试的开关,如果用户需要调试,可以打开开关写日志核对读写信息。
参考书籍为stevens大神的unp1,unp2。
四年后重新看自己学生时代的代码 感觉写的好啰嗦,找时间重构下好了
现在工作天天跟共享内存打交道,项目组的一个前辈封装的一套接口十分简洁
*/