进程间通信是程序员在开发软件的时候需要重点掌握的一个编程知识,下面我们就通过案例分析来了解一下,Socket进程间通信的有点都有哪些。
一、Linux系统中的进程之间通信(IPC)
作为一名嵌入式软件开发人员来说,处理进程之间的通信是很常见的事情。从通信目的的角度来看,我们可以把进程之间的通信分成3种:
为了进程的调度:可以通过信号来实现;
为了共享资源:可以通过互斥锁、信号量、读写锁、文件锁等来实现;
为了传递数据:可以通过共享内存、命名管道、消息队列、Socket来实现。
二、基于Socket通信的优点
1.跨主机,具有伸缩性
反正都是多进程了,如果一台机器的处理能力不够,就能用多台主机来处理。把进程分散到同一台局域网的多台机器上,程序改改Host:Port配置就能继续用。相反,文章开头部分列出的那些进程之间通信方式都不能跨机器,这就限制了可扩展性。
2.操作系统会自动回收资源
TCPport由一个进程独占,当程序意外退出时,操作系统会自动回收资源,不会给系统留下垃圾,程序重启之后能比较容易地恢复。
3.可记录、可重现
两个进程通过TCP通信,如果一个崩溃了,操作系统会关闭连接,另一个进程几乎立刻就能感受到,可以快速failover。当然应用层的心跳是必不可少的。(补充:操作系统本身对于TCP连接有一个保活时间,默认是2个小时,而且是针对全局的。)
4.跨语言
服务端和客户端不必使用同一种编程语言。
陈硕老师描述的是通用的Socket通信,因此客户端和服务端一般位于不同的物理机器上。
在嵌入式开发中,一般都是用同一种编程语言,因此,跨语言这个有点可以忽略不计了。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。