有人做过进程池吗?

bluefin 2002-08-23 12:10:06
如何实现?有没有什么资料?
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluefin 2002-08-24
  • 打赏
  • 举报
回复
谢谢大家,给分了
blh 2002-08-23
  • 打赏
  • 举报
回复
说清楚点!是不是前台有个服务器,接收请求,然后交给后台多个处理进程的一个处理???实现负荷分担的???
waterstream 2002-08-23
  • 打赏
  • 举报
回复
在前面有一个贴子,我把源代码都粘贴上了.方法比较好!

如果你想的话就去看看吧!
wiler 2002-08-23
  • 打赏
  • 举报
回复
同意blh(老猫) 的方法
XSY_VC 2002-08-23
  • 打赏
  • 举报
回复
up
rexp 2002-08-23
  • 打赏
  • 举报
回复
进程池没有做过,线程池做过。
线程池的话,可以用条件变量实现线程间的同步,处理请求的线程和接收请求的线程构成典型的生产者-消费者关系,用pthread_cont_wait和pthread_cond_signal可以轻松的实现,不需要自己管理线程状态,
不知道进程的同步中,有没有条件变量。
wake2000 2002-08-23
  • 打赏
  • 举报
回复
登记一个进程表,设定一个最大进程数目和一个最小进程数目和一个正常数;

系统启动时,就产生正常数目的进程。

一个业务进来,首先在进程表中搜索是否有空闲的进程,有的话,将该进程表项改成已用,并将业务递交给该进程。业务处理完毕后退出时将进程表项修改成未用。

如果业务请求时,进程表没有空余的进程,则向系统请求增加进程,系统首先检查当前进程数是否超过最大值,如果超过,拒绝业务请求。没有超过,则fork一个新的进程处理。

系统定时检查当前进程表的空闲状态,如果发现有过多的空闲进程(超过xx%),则停止一些,停止进程的数目下限为最小进程数。

这种服务器处理方式减少了fork进程时的系统资源消耗,达到减少响应时间的目的。
blh 2002-08-23
  • 打赏
  • 举报
回复
1.建立一个进程池,最近但的是一个进城id,一个忙闲标志,何一个管道(或unix socket),程序执行后先fork一堆子进程,同时和美一个子进程建立一个管道或者unix socket进行通信。
2。挡住进程接收到请求,从进程池中找一个空闲子进程,将空闲表机置1,将请求发送给子进程,在等待下一个请求
3。紫禁城处理完后,可以直接或者通过主进程返回结果给请求者,再通知主进程,主进程把该进程的空闲标志置0,以便下次使用
zhoulifa 2002-08-23
  • 打赏
  • 举报
回复
你是想要服务器程序A处于等待状态处理所有的工作,如果有需要就运行某个进程B,不需要时此进程B就什么也不做,下次再需要时此进程B又开始运行?
不就是要实现进程间通讯吗?
你的程序A做为父进程,而要运行的进程为B,一般情况让只有A处于监视状态,当发现条件成熟时就启动B进程,处理完毕了,B进程自动中止退出或者等待A发过来的信号中止。
用共享内存的方法很方便实现。
bluefin 2002-08-23
  • 打赏
  • 举报
回复
就是服务程序启动时就先建一堆进程,以后如果需要就使用其中的。进程工作完成后也不退出,而是回到进程池时,等待下次调用。Apache好象就用这个方法的,但我现在实在没时间去看它怎么实现的,希望有做过的人能指点一下。

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧