当前位置:  技术问答>linux和unix

关于控制并发进程数量和进程回收问题,请各位兄弟指点!急!!!!!!!

    来源: 互联网  发布时间:2015-07-06

    本文导语:  在进程并发控制上,我用了消息队列,感觉不太好使,请大家有什么原代码或者方法 请写上来,或者发给我lgd_hit@sina.com,还有最重要的,我想请问大家,当一个子进程结束后,是不是马上回收给父进程,还是要等待一会呀?我怎么...

在进程并发控制上,我用了消息队列,感觉不太好使,请大家有什么原代码或者方法
请写上来,或者发给我lgd_hit@sina.com,还有最重要的,我想请问大家,当一个子进程结束后,是不是马上回收给父进程,还是要等待一会呀?我怎么感觉子进程回收的很慢呀,我处理子进程僵死问题上用了signal(SIGCHLD,SIG_IGN);但是感觉进程结束很慢,请高手指点,是我进程处理上就慢,还是我的处理进程结束上有问题.

|
并发控制可以用信号量啊,
一个控制tcp并发的例子:
将信号量设置为子进程退出后自动复原,伪代码为:

create_sem(30) //创建初值为30的信号量,即控制并发数为30
while ( 1 ){
    P_sem(1);//信号量减1
    V_sem(1);//信号量加1,这两句可能不太好理解,请仔细想想,你一定会知道为什么的,注意信号量设置为子进程退出后自动复原。
   accept_sock();
   if ( fork()== 0) 
   {
     P_sem(1);
      ...
     exit(0);
   }
}
感觉子进程退出慢的问题最好是把的代码贴出来

|
如果确认程序没问题,则可能是子进程退出太快导致看上去只有5个进程在运行,可在每个子进程退出前用sleep延时几秒再看看

|
我也觉得NC(NIECHUAN)的伪代码在子进程exit(0)之前应该V_sem(1)吧;
处理僵死进程(控制进程返回),我这有三办法:1、如你所述;2、fork()两次,产生孙子进程;3、父进程捕获自进程退出信号(父进程有信号处理函数),这个方法能捕获自进程退出状态,而前两方法不行。都可以试试。

|
"我也觉得NC(NIECHUAN)的伪代码在子进程exit(0)之前应该V_sem(1)吧"
不需要,因为我说过信号量被设置为子进程退出后自动复原,即子进程中做了P_sem后,到退出时这个操作会自动取消

|
不会减少,你可以按上面的框架写个测试程序试试。我在多个项目中用了这样的方法,没出过问题,要不你留个mail下来,我有空把详细的道理发给你(这实在是几句话难以讲清)

    
 
 

您可能感兴趣的文章:

  • 后台进程和与控制终端断开的进程是一个意思吗?
  • 如何控制子进程创建子进程
  • unix进程问题,为什么关了控制界面进程结束了
  • 怎样编写一段程序,要求调用fork并在子进程中建立一个新的对话期。验证子进程变成了进程组长而且不再有控制终端。
  • 用Delphi或VC怎么向unix发送命令来检测进程甚至能够控制进程?
  • 请教一个父子进程控制的问题
  • 如何准确的控制进程个数
  • 想问个进程控制的问题,各位看看
  • 提问:如何控制多个进程?
  • 如何控制一个进程的CPU的使用率?
  • 进程控制
  • 请教:linux下如何检测并控制进程的内存大小?
  • 如何不启动控制台上的登录进程?
  • linux中怎么使后台进程的输出至控制终端?
  • apue学习问题 第八章 进程控制 相关
  • 在父进程终止以后子进程为什么不能接受控制终端的信号
  • 如何在父进程中控制子进程??
  • 为什么会出现僵尸进程?一个最简单的进程控制例子
  • 急!使用WINXP+Cygwin写进程控制程序中一个小问题
  • 如何控制一个进程cpu的占有率
  • 在linux下,如何进行“互斥”和“并发”的控制?
  • JAVA中有没有类似C中的select、poll机制的类包来实现线程并发控制
  • 多任务的并发通讯与控制问题
  • 信号灯控制并发进程问题?急
  • 并发流程控制 cocoflow
  • DB2和 Oracle的并发控制(锁)的比较
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 何运程控制 linux 请高手指点。
  • 如何运程控制 linux 请高手指点。
  • 如何在服务端控制客户连接,请高手指点!
  • 怎么用信号灯控制对共享内存的读写,大家都来指点一下,解决者另开贴给500分
  • C++ I/O 成员 fill():控制默认填充字符
  • 请问如何实现控制台下输入但是控制台不回显(说白了就是怎样写控制台程序的密码输入部分)
  • Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行
  • java能控制打印机吗?怎么控制?
  • 软件项目版本控制需要注意的几点
  • 如何控制printk信息写往哪些控制台?
  • CSS控制长文本内容显示(截取的地方用省略号代替)
  • “访问控制矩阵比访问控制表更节约空间”
  • jquery控制css display属性(控制元素显示与隐藏)
  • 请问 linux 是如何调用 alsa的控制接口的??是通过控制接口名字吗?
  • 请教一个问题。如何用Java实现远程控制,一台机器控制另一台,简单的如重启。给个详细的帮助。谢谢。。。
  • 1、linux下一个虚拟控制台北我弄死了怎么重启?2、如果所有的虚拟控制台都被我弄死了,是不是就完蛋了?
  • 音量控制键控制的音频流(setVolumeControlStream)描述
  • java高手都上厕所去了吗?如何控制System.in.read()的字符回显?说白了就让不想让别人看到我在控制台上都输了些什么见不得人的东西
  • 请问如何用telnet远程控制redhat 9linux系统呀?因为我没有在服务器安装远程控制软件如:VNC、secureCRT.谢谢
  • 控制终端如何转移
  • 如何实现启动一个带控制台的目标程序
  • bash的控制终端
  • 自动化控制 OpenAPC
  • 如何控制脉冲频率?
  • 控制终端与终端设备是什么关系?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3