社区
C语言
帖子详情
趋势的一道面试题:网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
xlookfor
2005-11-03 09:48:01
rt
...全文
1559
13
打赏
收藏
趋势的一道面试题:网络编程中设计并发服务器,使用多进程 与 多线程 ,请问有什么区别?
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sankt
2006-02-12
打赏
举报
回复
学习
lovememememe
2006-02-12
打赏
举报
回复
mark
OpenHero
2005-11-04
打赏
举报
回复
线程池
iorizht
2005-11-04
打赏
举报
回复
好帖
vcan
2005-11-04
打赏
举报
回复
allen_wang
我不赞成这种观点,服务的稳定性不是靠多进程能够实现的。要看系统的逻辑关系。如果4个功能模块是串联关系,则系统稳定性是串行模型,其稳定性将主要取决于稳定性最差的那个模块,且还要差一些。如果是并行模型,则稳定性主要取决于稳定性最好的模块,且还要好一点。与利用进程或利用线程设计无关。这两种方法都可实现并行或串行方案。
且既然买1000多万的服务器,必是其访问量很大,如果效率设计不好,效果会非常差,因为每个访问的资源多占用一点点,整个服务器就会增加很多负担。因此,越是关键服务,越要认真考虑设计,而不要寄期望于购买的设备。
wb19822002
2005-11-04
打赏
举报
回复
多线程的优势:
1. 创建与环境切换开销少
2. 同步的开销少(进程间同步一般牵涉OS内核)
3. 数据复制可通过“进程局部内存”
多线程的局限性:
1. 性能损失
(1)单处理器、“计算任务繁重”的应用程序不会从多线程中获益
(2)高精度的锁定策略会带来高同步开销
2. 健壮性降低
线程之间接收到的“MMU保护”很少或没有
3. 缺乏高精度的访问控制
摘自《C++网络编程(卷I)》,学习中。。。。。。
allen_wang
2005-11-04
打赏
举报
回复
vcan
你的观点我同意,我只是针对进程退出会释放资源而说的一种可能的情况。
关于设计,好的设计固然是很重要的。
但是,有时候设计的太好了(或者说太过了),对于真正的研发团队来说,反而有很大的难度。尤其是在很强的schedule压力下。
我知道有设计的太过,研发2年而放弃重来的项目。
也有要在短短半年内靠个位数的团队弄出win、solaris、linux多平台的几十万行项目的schedule。
因而,有很多时候,不是我们想要做到多好,就能做到多好的。
对于客户而言,很笨,但是能够马上解决问题的办法,就是好办法。
allen_wang
2005-11-03
打赏
举报
回复
多线程模型,每个连接的开销比较小(切换开销,资源开销等)
多进程模型,开销相对多线程要大些,但是也有他的好处,不用过多考虑线程模型中全局资源的互斥使用,如果存在资源泄漏,每个连接推出后,进程结束,所有资源都释放,不会有泄漏。而线程模型会积累这种泄漏的资源。
随便瞎写的。呵呵。
allen_wang
2005-11-03
打赏
举报
回复
但是,有时候在企业级的应用中,稳定压倒一切。
一些多余的开销,在那种1000多万的服务器上,和稳定性要求比起来,还不是很重要。。。
fytzzh
2005-11-03
打赏
举报
回复
1,进程:子进程是父进程的复制品。子进程获得父进程数据空间、堆和栈的复制品。
2,线程:相对与进程而言,线程是一个更加接近与执行体的概念,它可以与同进程的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。
两者都可以提高程序的并发度,提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
vcan
2005-11-03
打赏
举报
回复
呵呵,这个问题,唉
首先回答他线程和进程之间的区别,即包括各自的优点,也包括各自的缺点
我根本就不赞成用多进程模式。我感觉,几乎没有无法用多线程代替的多进程。之所以现在有很多多进程系统,很大因素就是因为开发团队无法有效控制复杂进程的开发,只好利用进程间天然的安全性来保护各个模块,但也带来了很大的代价--多余的进程通信代码,大的进程开销。
bm1408
2005-11-03
打赏
举报
回复
问这个题目的人,我估计它有。。。。。。。
gnixemos
2005-11-03
打赏
举报
回复
进程间通信开销也比较大
但是进程间安全
C++
多线程
编程视频教程(C++11
多线程
并发
)
线程与进程相比,它是一种花销小,...多编程
并发
在企业
中
开发显得尤为重要,本课程包含Windows
多线程
编程与C++11高
并发
编程,通过浅显易懂的代码与讲解,让你的
多线程
编程能力得到质的飞跃,具备开发高
并发
代码的能力!
并发
编程
面试题
(2020最新版)
文章目录基础知识
并发
编程的优缺点为什么要
使用
并发
编程(
并发
编程的优点)
并发
编程有什么缺点
并发
编程三要素是什么?在 Java 程序
中
怎么保证
多线程
的运行安全?并行和
并发
有什么
区别
?什么是
多线程
,
多线程
的优劣?线程和进程
区别
什么是线程和进程?进程与线程的
区别
什么是上下文切换?守护线程和用户线程有什么
区别
呢?如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?什么是线程死锁形成死锁的...
面试必看,
多线程
并发
面试题
合集
什么是java
中
的线程? 线程可以理解为一个轻量化进程。是进程的最小部分,可以与进程的其他部分(线程)
并发
执行。 什么是
多线程
?
多线程
是多个线程
并发
执行。Java支持
多线程
,因此它允许应用程序
并发
执行两个或多个任务。 在java
中
创建线程的方法是什么? 有两种方式创建线程: 继承Thread类 实现Runnable接口 但是本质上最终都是创建Thread类。 Thread和Runnable哪个更好? 实现Runnable接口被认为是比继承Thread类更好的方法,原因如下: Java不支持多重继
C++后台开发
面试题
总结(涉及C++基础、
多线程
多进程
、
网络编程
等)
C++后台开发
面试题
总结(涉及C++基础知识、
多线程
多进程
、TCP/IP
网络编程
、Linux操作、数据结构与算法) 因巩固知识体系,面试,梳理以往看到过的知识点,故总结如下相关题目,题目答案请自行google baidu,这里只提供题目。 一、C++基础知识
面试题
总结 1、多态的实现 2、说说C/C++的
区别
3、const关键字 4、说说malloc/free 和 new/delete
区别
5、指针和引用的
区别
6、C++
中
堆和栈的
区别
7、关键字static 8、在C++程序
中
调用被
Java
多线程
面试题
(面试必备)
文章目录一、
多线程
基础基础知识1.
并发
编程1.1
并发
编程的优缺点1.2
并发
编程的三要素1.3
并发
和并行有和
区别
1.4 什么是
多线程
,
多线程
的优劣?2. 线程与进程2.1 什么是线程与进程2.2 线程与进程的
区别
2.3 用户线程与守护线程2.4 什么是线程死锁2.5 形成死锁的四个必要条件2.6 如何避免死锁3. 创建线程的四种方式4. 线程状态和基本操作 一、
多线程
基础基础知识 1.
并发
编程 1.1
并发
编程的优缺点 优点: 充分利用多核CPU的计算能力,通过
并发
编程的形式将多核CPU的计算.
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章