首页 新闻 会员 周边

进程间通信方式

0
悬赏园豆:20 [已解决问题] 解决于 2018-11-05 10:25

求大佬指导:在管道、共享内存和socket通信的优缺点,在一个多用户的工程项目里使用哪种方式更好?

水云间月掌柜的主页 水云间月掌柜 | 初学一级 | 园豆:88
提问于:2018-10-11 14:57
< >
分享
最佳答案
0

你提出的多用户跟多进程间通信有什么关系?
为什么要提出多用户!?
只要适合场景都可以。

收获园豆:20
花飘水流兮 | 专家六级 |园豆:13560 | 2018-10-11 17:13

如果使用socket通信,每个用户开启一个socket并且使用该套接字无限接收和发送消息,如果同一时间有若干个用户登录,是否会达到服务器能开启的最大线程数?另外,使用socket需要绑定端口,如果多用户同事登录会不会出现端口被占用,从而引发用户断线的问题?
如果使用共享内存,因为共享内存没有同步和互斥机制,如果使用信号量来控制线程的同步和互斥,在信号量同步操作时我们往往会设置多个信号量,而信号量又是一种有限的资源,多用户登录的情况下是否会耗光这种资源?

水云间月掌柜 | 园豆:88 (初学一级) | 2018-10-12 10:05

@水云间月掌柜:

如果使用socket通信,每个用户开启一个socket并且使用该套接字无限接收和发送消息,如果同一时间有若干个用户登录,是否会达到服务器能开启的最大线程数?[【计算机都是有限资源,可能会,优劣取决于实现方式】另外,使用socket需要绑定端口,如果多用户同事登录会不会出现端口被占用,从而引发用户断线的问题?【服务器端口跟客户端端口不是一个概念】

如果使用共享内存,因为共享内存没有同步和互斥机制,如果使用信号量来控制线程的同步和互斥,在信号量同步操作时我们往往会设置多个信号量,而信号量又是一种有限的资源,多用户登录的情况下是否会耗光这种资源?【计算机都是有限资源】

概念太多混杂是不好的。关于socket理解有误,第二段理解也有误,除了api提供的方式,自己也是可以实现信号量的,耗不耗完都只取决你的实现方式和策略。

比如为了连接更快,使用异步连接方式,在很多情况下我们还会设定work池来进行工作解决进程内线程数量问题,每个用户存在一个存量问题,但用户又是不可控的,我们可以用动态集合中标识每个用户...用户不再了,那么该用户数据生命周期就结束...实践是为了更好的理解。

花飘水流兮 | 园豆:13560 (专家六级) | 2018-10-12 10:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册