Chinaunix

标题: 问一个简单的问题 [打印本页]

作者: star316    时间: 2009-03-19 09:43
标题: 问一个简单的问题
写一个LINUX应用程序, 但是看完后发现, 可以创建进程,也能创建线程。

那我们做产品开发,到底使用创建进程好,还是创建线程好? 有什么区别呢?

看树上嵌入式的例子,他们都是通过SLEEP 来控制某个进程的优先运行,好像都是没有优先级的,
有没有什么函数让自己创建的进程先运行呢?

能不能弄个比较经典的例子学习一下。 谢谢!
作者: alexhappy    时间: 2009-03-19 09:57
多进程还是多线程这取决于具体情况,你可搜索一下,这个问题讨论的还是比较多的
vfork函数能保证创建的子进程优先运行。。。具体能不能满足你的需要你可以man一下,用sleep也是可以的其实
作者: star316    时间: 2009-03-19 10:04
那如果有要创建好几个子进程, 都用 vfork 的话, 那哪个子进程优先运行呢?
作者: alexhappy    时间: 2009-03-19 10:09
你仔细想想你所问的问题,答案就出来啦------程序是顺序执行
作者: liying_gg    时间: 2009-03-19 10:17
vfork是调用时拷贝的,开销会比较划算。
作者: star316    时间: 2009-03-19 10:28
呵呵,谢谢几位的帮助!

也就是说如果有几个进程,我要先分配好顺序,然后再按顺序VORK 下来, 就等于给每个进程分配了优先级? 也就说父进程的优先级最低了?

比如
a1=vfork();
a2=vfork();
a3=vfork();
这样就相当于 优先级 a1>a2>a3 , 对吗?   那这样的话 fork() 用处就不大了,因为不能确保哪个进程优先运行

[ 本帖最后由 star316 于 2009-3-19 10:30 编辑 ]
作者: alexhappy    时间: 2009-03-19 10:36
此言差矣!不同的需求有不同的解决方案
作者: star316    时间: 2009-03-19 10:49
呵呵, 我这是想先了解优先级的问题, 那我上面说的优先级的分配,这样有问题吗? 或者有好点的方法吗?
作者: scutan    时间: 2009-03-19 15:12
优先级并不能保证某个进程先于另外的进程执行。
可以考虑信号量或锁的方式来控制某个进程先于另外的进行执行。 具体可参考《UNIX网络编程》第二卷。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2