首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Delphi
非技术区
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
面试归来,狠狠的鄙视了自己一下,重新复习一下关于进程与线程的一些概念性东西,在此请大家指正.
[已结帖,结帖人:lonoaer]
加为好友
发送私信
在线聊天
lonoaer
等级:
可用分等级:
贫农
总技术分:
2080
总技术分排名:
10359
结帖率:
100.00%
发表于:
2008-08-22 01:18:43
楼主
Windows进程与线程复习笔记
进程
进程是应用程序的执行实例。进程就是一大堆对象的集合。包括内存(虚拟内存)、文件句柄、线程、一大串DLL模块(被载入这一进程的地址空间)等资源。
线程
线程是比进程更小的执行单元,是进程中某一个单一顺序的控制流,一个进程可以包含多个线程,且必须至少包含一个线程。一个进程内的所有线程共享进程的虚拟地址空间和资源。CPU的调度与时间分配皆以线程为对象。
每个线程产生时配有自己的一组CPU寄存器和一个堆栈。如果堆栈不需要,操作系统会将它动态扩充。
注:在MFC中,线程被分为两类,即工作线程和用户界面线程。如果一个线程,只完成后台计算不需要和用户交互,那么可以使用工作线程;如果需要创建一个处理用户界面的线程,则应使用用户界面线程。这两者的主要区别在于,MFC框加会给用户界面线程增加一个消息循环,这样用户界面线程就可以处理自己的消息队列中的消息。
为什么有了多进程还需要多线程?
1、 提高应用程序的响应频率。并不是每一个程序都需要多线程,然而多线程使程序的效率得以高度发挥。线程可以改善用户对于软件操作的感受,在同一时间的一台服务器上提供对成百上千用户的支持而用户确感觉不到其对结果输出的影响。
2、 改善程序结构,方便程序员编程,可以将一个复杂的进程划分为多个线程。
3、 线程的创建和销毁所需资源相对于进程的创建和销毁明显要少得多,对系统资源的冲击也相对比较小。
4、 线程之间共享进程的虚拟空间和资源,所以交换数据非常方便。
5、 可以跟随硬件(CPU)性能的提升而提升系统性能,操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU之上。
6、 CPU或者说是操作系统在调度切换进程比调度切换线程上所用开销要多得多。
7、 进程间无法共享内存,进程间的通信相比同一个进程内的线程间通信要麻烦得多。
多线程的缺点
1、 多线程的优点和缺点实际上是统一对立的。支持多线程的程序(进程)可以取得真正的并行,由于线程共享进程的内存(包括Code,Data,Stack),故线程间通信也是方便的。它的缺点也是由于线程共享进程地址空间,因此会导致资源的竞争,因此对某一个有多个线程访问的的资源要进行同步处理。
2、 CPU在调度切换线程时需要保存线程状态等,如果线程过多,频繁调度切换,需要占用相当的时间,所以线程也不是越多越好,有一句话怎么说来着,适合你的就是最好的。
3、 多线程没有内存隔离,单个线程的崩溃会导致整个程序的崩溃。
4、 多线程程序必须小心设计,多线程程序测试困难,出现BUG不容易定位。
问题点数:
200
回复次数:
35
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chtitaxie
东弦_界七
等级:
可用分等级:
中农
总技术分:
320
总技术分排名:
45043
发表于:
2008-08-22 05:45:12
1
楼 得分:
1
学习.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
aca_jingru
aca
等级:
可用分等级:
富农
总技术分:
2140
总技术分排名:
10249
发表于:
2008-08-22 07:32:14
2
楼 得分:
15
总结的很生硬,我来破点冷水并无恶意..
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yuqianyi1974
老于
等级:
可用分等级:
中农
总技术分:
9190
总技术分排名:
2228
发表于:
2008-08-22 08:14:53
3
楼 得分:
1
jf
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
byteh
火星菠菜
等级:
可用分等级:
掌柜
总技术分:
2519
总技术分排名:
8863
发表于:
2008-08-22 08:18:26
4
楼 得分:
1
路过,瞅瞅
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
flychenjun
陈俊
等级:
可用分等级:
富农
总技术分:
1458
总技术分排名:
14319
发表于:
2008-08-22 08:20:34
5
楼 得分:
1
接分 ̄ ̄ ̄!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
neweipeng
W2I&I2W
等级:
可用分等级:
富农
总技术分:
1600
总技术分排名:
13160
发表于:
2008-08-22 08:23:10
6
楼 得分:
10
进程--内存地址分配基本单位
线程--CPU时间分配基本单位
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
dgxlaen
D&Qlaen
等级:
可用分等级:
贫农
总技术分:
275
总技术分排名:
49779
发表于:
2008-08-22 08:49:18
7
楼 得分:
5
进程考虑的东西要多一些,线程相对于较少!
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lyguo
愚人
等级:
可用分等级:
小地主
总技术分:
6701
总技术分排名:
3135
发表于:
2008-08-22 08:55:45
8
楼 得分:
5
学习.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
shuihan20e
鹏哥(理性的羊肠小道胜过激情的高速公路)
等级:
可用分等级:
中农
总技术分:
6047
总技术分排名:
3618
发表于:
2008-08-22 09:20:53
9
楼 得分:
5
引用 8 楼 lyguo 的回复:
学习.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
aniugee
待费旗
等级:
可用分等级:
富农
总技术分:
923
总技术分排名:
23124
发表于:
2008-08-22 09:23:11
10
楼 得分:
1
路过
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
zwjchina
蒲石
等级:
可用分等级:
小地主
总技术分:
10105
总技术分排名:
1950
发表于:
2008-08-22 10:00:29
11
楼 得分:
10
"线程是比进程更小的执行单元"
在Windows下,光看这句就说明你还是没弄明白。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
gyk120
上了大学才发现高中是如此美好
等级:
可用分等级:
中农
总技术分:
12132
总技术分排名:
1525
2
发表于:
2008-08-22 10:09:48
12
楼 得分:
10
引用 11 楼 zwjchina 的回复:
"线程是比进程更小的执行单元"
在Windows下,光看这句就说明你还是没弄明白。
不过网上似乎有一模一样的话,可能是有误导作用?
其实我也不怎么明白,唯一明白的就是进程是单独的,线程运行在进程的空间里面
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
auqfiudh
22 岁的未婚男
等级:
可用分等级:
贫农
总技术分:
615
总技术分排名:
29359
发表于:
2008-08-22 10:30:09
13
楼 得分:
10
"线程是比进程更小的执行单元"
这句 挺糊弄人的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
kenshinggg
学好技术转业务
等级:
可用分等级:
中农
总技术分:
3205
总技术分排名:
7646
发表于:
2008-08-22 11:47:44
14
楼 得分:
5
去哪里面試啊?多線程技術
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
yangkunjie
七郎
等级:
可用分等级:
掌柜
总技术分:
8588
总技术分排名:
2324
发表于:
2008-08-22 11:55:09
15
楼 得分:
10
概念的东西需要实践才能更好的理解
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lonoaer
等级:
可用分等级:
贫农
总技术分:
2080
总技术分排名:
10359
发表于:
2008-08-22 12:13:09
16
楼 得分:
0
其实上实践都已经有了很多,只不过做多了以后,很多基础概念性的东西也就忘了,
而面试开始也恰恰是问的比较基础,大家逻辑思维可能都一样,包括我自己,
都想基础概念性的东西都没有搞清楚,你还能把它做好.
欢迎大家继续指出不足之处.
感谢 zwjchina
看来我得把Windows核心编程,重新翻出来看一下
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lonoaer
等级:
可用分等级:
贫农
总技术分:
2080
总技术分排名:
10359
发表于:
2008-08-22 12:14:55
17
楼 得分:
0
也感谢 aca_jingru
感谢所有参与者
我的表达能力是比较有问题,还有一个可能比较关键的因素吧,就是的确认识不够清晰
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
firetoucher
风焱
等级:
可用分等级:
富农
总技术分:
46152
总技术分排名:
179
3
发表于:
2008-08-22 14:27:22
18
楼 得分:
15
复习得很认真,不过怎么看怎么像背书?:)
1. 现在的发展,其实还有比“线程”更小的“超线程”。所以“CPU的调度与时间分配皆以线程为对象”并不准确,或者说需要看这句话所指的范围。
2. 进程间是可以共享内存的。
3. “单个线程的崩溃会导致整个程序的崩溃”?!
4. 你很喜欢用“CPU在调度切换线程”。CPU是不懂风情的,它并不知道是线程还是进程,这是OS的事情。
......
FT
--
Anything one man can imagine, other men can make real.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
javalover23
该用户很懒,没有设置昵称
等级:
可用分等级:
短工
总技术分:
5
总技术分排名:
253903
发表于:
2008-08-31 01:24:34
19
楼 得分:
5
帮楼主顶一下! 顺便也接点分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
fox009521
等级:
可用分等级:
长工
总技术分:
5
总技术分排名:
253903
发表于:
2008-08-31 07:41:00
20
楼 得分:
1
学习一下 都是高手 呵呵
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
tangyulong520
老唐
等级:
可用分等级:
长工
总技术分:
10
总技术分排名:
218105
发表于:
2008-09-13 10:14:10
21
楼 得分:
1
好
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
UnixStudier
追月
等级:
可用分等级:
中农
总技术分:
8
总技术分排名:
240520
发表于:
2008-09-14 21:22:36
22
楼 得分:
5
原来做delphi的时候从来没用到进程这个概念,线程倒是用过。
我觉得理解进程、线程的概念的最好办法就是找个开源的操作系统(minix,FreeBD,OpenSolaris,linux ...),
看看它的进程结构里都有什么东西。如果能看懂大部分的成员,那对进程的理解就比较好了。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
suiyunonghen
不得闲
等级:
可用分等级:
富农
总技术分:
1872
总技术分排名:
11469
发表于:
2008-09-14 21:38:15
23
楼 得分:
0
沙发,顶,接分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
XXSingle
心无了然
等级:
可用分等级:
掌柜
总技术分:
7945
总技术分排名:
2523
发表于:
2008-09-21 00:07:19
24
楼 得分:
5
想不到进程和线程还能说出那么多关系,学习了
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
mygodsos
乌龙哈里
等级:
可用分等级:
掌柜
总技术分:
3359
总技术分排名:
7032
发表于:
2008-09-21 02:19:51
25
楼 得分:
10
澄澄城
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
hys_427
小和
等级:
可用分等级:
富农
总技术分:
10071
总技术分排名:
1974
发表于:
2008-09-21 09:28:01
26
楼 得分:
1
接分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
3150379
孒淵
等级:
可用分等级:
富农
总技术分:
4327
总技术分排名:
4937
发表于:
2008-09-21 09:30:00
27
楼 得分:
5
接分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
gwhdaxia
阿木2003
等级:
可用分等级:
掌柜
总技术分:
1653
总技术分排名:
13403
发表于:
2008-09-21 09:42:28
28
楼 得分:
1
我对这个也很糊涂
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
JeffChung
风中聆听
等级:
可用分等级:
中农
总技术分:
17033
总技术分排名:
847
发表于:
2008-09-21 10:22:44
29
楼 得分:
1
接分
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
GDTOPONE
IT民工
等级:
可用分等级:
富农
总技术分:
7230
总技术分排名:
2856
发表于:
2008-09-21 10:39:01
30
楼 得分:
1
我只明白:
1.求学不是求分数.
2.纹身多未必就是老大.
3.分数高未必就是赚钱多.
4.读书不成未必就是不能做个老板.
5.人生在世要说是:时也、命也、运也.
修改