当前位置: 技术问答>linux和unix
有人做过进程池吗?
来源: 互联网 发布时间:2014-12-12
本文导语: 如何实现?有没有什么资料? | 1.建立一个进程池,最近但的是一个进城id,一个忙闲标志,何一个管道(或unix socket),程序执行后先fork一堆子进程,同时和美一个子进程建立一个管道或者uni...
如何实现?有没有什么资料?
|
1.建立一个进程池,最近但的是一个进城id,一个忙闲标志,何一个管道(或unix socket),程序执行后先fork一堆子进程,同时和美一个子进程建立一个管道或者unix socket进行通信。
2。挡住进程接收到请求,从进程池中找一个空闲子进程,将空闲表机置1,将请求发送给子进程,在等待下一个请求
3。紫禁城处理完后,可以直接或者通过主进程返回结果给请求者,再通知主进程,主进程把该进程的空闲标志置0,以便下次使用
2。挡住进程接收到请求,从进程池中找一个空闲子进程,将空闲表机置1,将请求发送给子进程,在等待下一个请求
3。紫禁城处理完后,可以直接或者通过主进程返回结果给请求者,再通知主进程,主进程把该进程的空闲标志置0,以便下次使用
|
登记一个进程表,设定一个最大进程数目和一个最小进程数目和一个正常数;
系统启动时,就产生正常数目的进程。
一个业务进来,首先在进程表中搜索是否有空闲的进程,有的话,将该进程表项改成已用,并将业务递交给该进程。业务处理完毕后退出时将进程表项修改成未用。
如果业务请求时,进程表没有空余的进程,则向系统请求增加进程,系统首先检查当前进程数是否超过最大值,如果超过,拒绝业务请求。没有超过,则fork一个新的进程处理。
系统定时检查当前进程表的空闲状态,如果发现有过多的空闲进程(超过xx%),则停止一些,停止进程的数目下限为最小进程数。
这种服务器处理方式减少了fork进程时的系统资源消耗,达到减少响应时间的目的。
系统启动时,就产生正常数目的进程。
一个业务进来,首先在进程表中搜索是否有空闲的进程,有的话,将该进程表项改成已用,并将业务递交给该进程。业务处理完毕后退出时将进程表项修改成未用。
如果业务请求时,进程表没有空余的进程,则向系统请求增加进程,系统首先检查当前进程数是否超过最大值,如果超过,拒绝业务请求。没有超过,则fork一个新的进程处理。
系统定时检查当前进程表的空闲状态,如果发现有过多的空闲进程(超过xx%),则停止一些,停止进程的数目下限为最小进程数。
这种服务器处理方式减少了fork进程时的系统资源消耗,达到减少响应时间的目的。
|
你是想要服务器程序A处于等待状态处理所有的工作,如果有需要就运行某个进程B,不需要时此进程B就什么也不做,下次再需要时此进程B又开始运行?
不就是要实现进程间通讯吗?
你的程序A做为父进程,而要运行的进程为B,一般情况让只有A处于监视状态,当发现条件成熟时就启动B进程,处理完毕了,B进程自动中止退出或者等待A发过来的信号中止。
用共享内存的方法很方便实现。
不就是要实现进程间通讯吗?
你的程序A做为父进程,而要运行的进程为B,一般情况让只有A处于监视状态,当发现条件成熟时就启动B进程,处理完毕了,B进程自动中止退出或者等待A发过来的信号中止。
用共享内存的方法很方便实现。
|
进程池没有做过,线程池做过。
线程池的话,可以用条件变量实现线程间的同步,处理请求的线程和接收请求的线程构成典型的生产者-消费者关系,用pthread_cont_wait和pthread_cond_signal可以轻松的实现,不需要自己管理线程状态,
不知道进程的同步中,有没有条件变量。
线程池的话,可以用条件变量实现线程间的同步,处理请求的线程和接收请求的线程构成典型的生产者-消费者关系,用pthread_cont_wait和pthread_cond_signal可以轻松的实现,不需要自己管理线程状态,
不知道进程的同步中,有没有条件变量。
|
在前面有一个贴子,我把源代码都粘贴上了.方法比较好!
如果你想的话就去看看吧!
如果你想的话就去看看吧!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。