免费注册 查看新帖 |

Chinaunix

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

[C] 什么时候需要用多进程而不是多线程? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-01-21 11:30 |只看该作者
是为了安全吗?可是我觉得就算是安全问题,也是编程时候的问题,貌似不会因为使用了多线程而给黑客可乘之机啊
windoze 发表于 2013-01-16 11:16
回复 1# 郁闷饿

比如SSH Server就只能(应该)用多进程,想想为什么

论坛徽章:
0
12 [报告]
发表于 2013-01-21 11:30 |只看该作者
这倒是。。。
lxyscls_cu 发表于 2013-01-16 11:26
一个线程挂了进程就挂了

论坛徽章:
0
13 [报告]
发表于 2013-01-21 11:32 |只看该作者
线程互斥锁很方便啊,而且用信号量也简单
x5miao 发表于 2013-01-17 23:09
线程的同步比进程之间的通信复杂多了好不好?

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
14 [报告]
发表于 2013-01-21 15:32 |只看该作者
郁闷饿 发表于 2013-01-21 11:30
是为了安全吗?可是我觉得就算是安全问题,也是编程时候的问题,貌似不会因为使用了多线程而给黑客可乘之机 ...


这倒不是黑客神马的事,而是因为绝大多数OS规定了一个进程只能有一个身份,但SSH必须有能力让不同的连接对应不同的身份,所以对于SSH来说,只能用多进程模式。
类似的,但凡一个服务器程序需要使用OS提供的基于用户的权限控制,这个服务器程序就只能用多进程模式,没有别的选择。

论坛徽章:
30
摩羯座
日期:2013-12-23 17:28:38牛市纪念徽章
日期:2015-07-13 11:35:582022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:57青铜圣斗士
日期:2015-11-27 17:45:3815-16赛季CBA联赛之天津
日期:2016-02-15 13:44:3615-16赛季CBA联赛之江苏
日期:2018-05-02 16:56:2715-16赛季CBA联赛之辽宁
日期:2018-08-08 13:41:1015-16赛季CBA联赛之深圳
日期:2018-10-02 18:05:0315-16赛季CBA联赛之天津
日期:2019-05-31 15:05:0615-16赛季CBA联赛之北京
日期:2022-06-30 13:34:1115-16赛季CBA联赛之同曦
日期:2022-07-06 19:33:5415-16赛季CBA联赛之吉林
日期:2022-12-28 14:16:22
15 [报告]
发表于 2013-01-21 15:57 |只看该作者
windoze 发表于 2013-01-21 15:32
这倒不是黑客神马的事,而是因为绝大多数OS规定了一个进程只能有一个身份,但SSH必须有能力让不同的连接 ...

不同的进程赋予不同的权限,但我认为线程这玩意在linux里面也是个新概念,就是微软搞出来的高效并行处理的玩意

论坛徽章:
0
16 [报告]
发表于 2013-01-21 16:01 |只看该作者
容易扩展,如分布式应用,各个功能放在不同的硬件上处理

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
17 [报告]
发表于 2013-01-21 20:48 |只看该作者
本帖最后由 yulihua49 于 2013-01-21 20:58 编辑
newbieforever 发表于 2013-01-21 09:34
多进程稳定性更强, linux上多线程并不比多进程高效

我原来也是这观点。
但后来发现,当过程间共享的东西多的话,多线程有优势。
例子就是我最近的工作。
一堆计算过程需要在内存查一些表,表的规模比较大,建立这些表需要的时间比较长。
我们就采用多线程,它们非常频繁的查询这些表。对这些表并行、共享使用,只建立和维护一套即可。
最后,每台服务器32个计算线程,共享4~5个数据库连接,用于结果持久化。
当这些表需要更新时,由管理器通知每个服务器一个线程来处理即可。
这些工作如果多进程来完成,开销大增,效率骤降。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
18 [报告]
发表于 2013-01-21 20:54 |只看该作者
回复 17# yulihua49


    你可以试试共享内存。这是进程间共享数据的一种方便方式。

简单来说就是做一个内存映射,然后交给子进程,然后大家一起写。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
19 [报告]
发表于 2013-01-21 20:59 |只看该作者
的确, 多进程没有太多限制, 共享内存足以解决一般的数据结构, 共享内存里做内存池和树结构体也是妥妥的, 只不过指针变偏移量而已.

我被逼用多进程(fork类), 还是因为fd有限制, 做server很容易用多worker.

starwing83 发表于 2013-01-21 20:54
回复 17# yulihua49

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
20 [报告]
发表于 2013-01-21 21:01 |只看该作者
本帖最后由 yulihua49 于 2013-01-21 21:12 编辑
starwing83 发表于 2013-01-21 20:54
回复 17# yulihua49

里边还有数据库连接呢,那可不能多进程共享。
另外,公共数据使用一些框架程序,那些程序内部使用了malloc,我也干涉不了。malloc的内容是不在共享内存的。
也曾设想搞一个salloc/sfree, 在SHM,感觉意义不大,放弃了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP