免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: flyhu
打印 上一主题 下一主题

!!多进程并发框架问题向各位大侠请教(急)!! [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-14 12:38 |只看该作者
看看APUE里popen的实现,改改能满足你的需求

论坛徽章:
0
12 [报告]
发表于 2007-08-14 19:46 |只看该作者
原帖由 scutan 于 2007-8-13 21:16 发表
1. 是的, 将fun()改成你的子进程就可以了. 后面那个while()就是不断产生新进程的一个循环.
2. 对于父子进程. 在父进程中打开了一个文件, 然后再fork一个子进程, 随后父进程再关闭这个相应的描述符就可以了.然后 ...


我要用pro*c链接数据库,从数据库中取出配置表,并由子进程清理数据中的数据。

我连接数据库在主进程进行,我想子进程可以继承这个连接,可以吗?这样就不用每个子进程都要连接数据库。

我的这个想法,用进程的方式可以实现吗?还是需要用线程的方式?

论坛徽章:
0
13 [报告]
发表于 2007-08-14 19:46 |只看该作者
原帖由 icydancer 于 2007-8-14 12:38 发表
看看APUE里popen的实现,改改能满足你的需求


大侠,APUE是什么呢?能给个连接吗?!!或说一个大概的思路。。。

论坛徽章:
0
14 [报告]
发表于 2007-08-14 20:04 |只看该作者
原帖由 flyhu 于 2007-8-14 19:46 发表


我要用pro*c链接数据库,从数据库中取出配置表,并由子进程清理数据中的数据。

我连接数据库在主进程进行,我想子进程可以继承这个连接,可以吗?这样就不用每个子进程都要连接数据库。

我的这个想法 ...



嗯.可以,你在父进程中打开连接之后,再fork一个子进程,则这个子进程也拥有这个连接,不过你的父进程需要将这个连接关掉.以使得子进程单独与这个连接相通信.
使用多进程的方式要简单一些,多线程的话同步,并发这些可能会引起新的问题,而且你这个程序进程间通信应该要求不太高,所以我认为用多进程的方式就可以了.

APUE是指Richard Stevens写的那本<UNIX环境高级编程> (<Advanced Programming in the Unix Environment>) 现在已经是第二版了!

论坛徽章:
0
15 [报告]
发表于 2007-08-14 20:05 |只看该作者
apue原来是环境编程啊。。。:)

我以前看过一点,没有毅力。哎。。

现在着急用,也没时间看呢。。我刚才下了一个英文版,还没来得及看。。。最近忙的头大了

还希望各位大侠能帮帮我。。

论坛徽章:
0
16 [报告]
发表于 2007-08-14 22:49 |只看该作者
原帖由 flyhu 于 2007-8-12 20:43 发表
好久没有写程序了,最近公司的项目比较急,接到一个批处理多进程并发的任务。
我的主要设计是这样的:
1、以守护进程的方式运行主程序。
2、主程序根据配置文件,和要做的作业,交给多个(如5个),去运行。 ...


----------------------------------------------------------------------------------------------------------
主进程为守卫进程,一次拉起5个进程,负责分发任务消息给各个子进程进行处理。那么主,子进程之间采用FIFO有名管道的形式进行通信,
主进程采用select IO多路复用的方式分发获得任务给各个子进程,并且父子进程还需要增加心跳消息,万一子进程挂掉,
父进程能够采取措施。主进程可以对全部子进程配置一张map, 将进程号和任务号对应起来,也可以将进程号和空闲状态
对应起来,再加上心跳消息,父进程就可以完全可控子进程的状态,消息处理,空闲。当然,其他一些细节需要你去完善了,
比如进程同步, 信号处理, 日志记录等等

论坛徽章:
0
17 [报告]
发表于 2007-08-15 08:56 |只看该作者
原帖由 scutan 于 2007-8-14 20:04 发表



嗯.可以,你在父进程中打开连接之后,再fork一个子进程,则这个子进程也拥有这个连接,不过你的父进程需要将这个连接关掉.以使得子进程单独与这个连接相通信.
使用多进程的方式要简单一些,多线程的话同步,并 ...

fork后,是否可以共享链接,这个不一定吧。比较好的方式是,fork前不要connect数据库,fork后,父子各自connect。连接没有必要共享。数据库自身的并发的设计,让你不必考虑各自连接的如何并发同步。

论坛徽章:
0
18 [报告]
发表于 2007-08-15 14:57 |只看该作者
子进程能够继承数据库连接吗?试过?
楼主啊,没有金箍棒就不要打妖精。瞧您问的问题,只有把你的工资缴来才能和答案匹配

论坛徽章:
0
19 [报告]
发表于 2007-08-15 20:08 |只看该作者
原帖由 unixpm 于 2007-8-14 22:49 发表


----------------------------------------------------------------------------------------------------------
主进程为守卫进程,一次拉起5个进程,负责分发任务消息给各个子进程进行处理。那么主,子进 ...


收益匪浅,十分感谢。。
你说的是一个很成熟的架构,我会逐渐完善我的程序。。再次感谢

论坛徽章:
0
20 [报告]
发表于 2007-08-15 20:10 |只看该作者
原帖由 pinyin 于 2007-8-15 14:57 发表
子进程能够继承数据库连接吗?试过?
楼主啊,没有金箍棒就不要打妖精。瞧您问的问题,只有把你的工资缴来才能和答案匹配


就是因为不会,所以才请教,如果我会了,我就不会请教了,我就帮别人解答问题了,不会嘲讽别人.

线程可以,我以前已经实现了。

只不过我这次想通过进程来做。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP