duanjigang 发表于 2011-01-27 09:41

epoll并没有改变传统的select或poll等处理方式。大多数模型还是一个通信控制线程,多个数据处理线 ...
CU第一菜 发表于 2011-01-27 08:57 http://bbs2.chinaunix.net/images/common/back.gif


    数据处理是独立的,是不是用进程更好些?因为它们之间没有什么需要协作的

CU第一菜 发表于 2011-01-27 09:45

数据处理是独立的,是不是用进程更好些?因为它们之间没有什么需要协作的
duanjigang 发表于 2011-01-27 09:41 http://bbs.chinaunix.net/images/common/back.gif


    进程和线程没有太大的本质区别,linux下个人偏好还是进程好,因为线程的话,如果主线程挂掉,会导致子线程也崩溃,可能出现一些异常。
也不能说完全没有协作,比如说通信请求到达,需要指派给某个具体的进程来处理,这就是相应的协作关系了。

duanjigang 发表于 2011-01-27 10:06

比如说通信请求到达,需要指派给某个具体的进程来处理,这就是相应的协作关系了。

CU第一菜 发表于 2011-01-27 09:45 http://bbs2.chinaunix.net/images/common/back.gif

这个指的是父进程把接收到的连接套接字传递给子进程继续通讯吗??:em17:
这样的话开销会不会很大?我意思通讯数据接收一个进程就够了,数据处理让多个进程来完成···

CU第一菜 发表于 2011-01-27 10:20

这个指的是父进程把接收到的连接套接字传递给子进程继续通讯吗??
这样的话开销会不会很大?我 ...
duanjigang 发表于 2011-01-27 10:06 http://bbs.chinaunix.net/images/common/back.gif


    设计的原则我觉得可以参考nginx,主进程只负责通信控制,数据处理有子进程来完成。
如果如版主大牛说的父进程进行通讯,那如果多个某些通信要进行多次交互,第一次数据处理由子进程A完成,而后续的数据交互处理,是不是可能再由主进程分派给其他子进程来完成了?
apache里面似乎是一个子进程负责处理完一个完整的tcp连接通信(待核实),让子进程体现会话处理的完整性,是不是也是一种较好的方式。

dreamice 发表于 2011-01-27 10:24

这个指的是父进程把接收到的连接套接字传递给子进程继续通讯吗??
这样的话开销会不会很大?我 ...
duanjigang 发表于 2011-01-27 10:06 http://bbs.chinaunix.net/images/common/back.gif


英雄:通信的开销应该通过其通信方式来判定吧,设计一个比较优化的方式,可能效率还是很高的。

CU第一菜 发表于 2011-01-27 12:13

如果数据的收发走两条连接的话,我们完全可以把通讯只用一个进程来做,数据处理多个子进程来实现 ...
duanjigang 发表于 2011-01-27 10:33 http://bbs.chinaunix.net/images/common/back.gif


    如果数据发送是以接收到的数据为判断前提的,那还是存在数据接收和发送之间的通信同步了。个人感觉,以tcp连接会话为单位来做为进程处理更合理一些。

执一 发表于 2011-01-27 13:47

apache中用计分板的方式实现父进程和子进程之间的通信,记分板有点类似于共享内存。主进程和子进程之间又是通过管道来作为控制的,比如说主进程要结束子进程,子进程要向父进程报告错误等。

dreamice 发表于 2011-01-27 14:58

apache中用计分板的方式实现父进程和子进程之间的通信,记分板有点类似于共享内存。主进程和子进程之间又是 ...
执一 发表于 2011-01-27 13:47 http://bbs.chinaunix.net/images/common/back.gif


    apache的多进程处理图

duanjigang 发表于 2011-01-27 15:05

多谢江总分享,还没看apache的代码,看这个图暂时没啥深切体会,只是觉得跟我目前做的模型很像:wink:

dreamice 发表于 2011-01-27 16:03

多谢江总分享,还没看apache的代码,看这个图暂时没啥深切体会,只是觉得跟我目前做的模型很像
duanjigang 发表于 2011-01-27 15:05 http://bbs.chinaunix.net/images/common/back.gif


    跟你的机制可能差异还是很大。

apache的主进程只负责控制,在初始化时创建一堆子进程,子进程通过记分牌和管道与主进程通信。
主进程除了控制子进程外,不做通信处理。子进程通过竞争获得监听权,然后进行一系列的处理,因此apache的进程是负责一系列的连接处理的。这样避免了进程间通信,效率还是很可观的。
页: 1 2 3 4 5 6 7 8 [9] 10 11
查看完整版本: 谈谈你接触的通讯程序的模型