面试归来,狠狠的鄙视了自己一下,重新复习一下关于进程与线程的一些概念性东西,在此请大家指正.

lonoaer lonoaer 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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不容易定位。
...全文

相关推荐

开发资料下载_各大公司的面试题、“鄙视”题

标题中的“开发资料下载_各大公司的面试题、“鄙视”题”表明这是一份集合了多个公司面试题目的资源包,特别提到了“鄙视”题,这通常指的是那些难度较高或者较为偏门的问题,旨在考察候选人的深度理解和解决问题的能力

weixin_38669628

被华为捉弄的面试经历

博主分享华为校园招聘面试经历,初试后意外获面试机会,面试中被问链表插入、机试等问题,还经历性格测试。最终被拒,总结经验,如做好准备、多练编程、了解企业文化等,还分享上机考试样题和自己机试考题。

baiwei19890914

银行技术岗面试面经

作者分享银行技术岗面试经历。农行面试正规,采用单面,面试官有气质,会围绕自我介绍提问;民生长沙IT分中心竞争激烈,面试官问项目、基层工作、加班等问题;工行面试地点像迷宫,面试官提问较基础。技术岗面试效率高,技术问题不深,信心、表现和运气重要。

hniyani

清华计算机408考研真题资料经验分享

本文分享了清华计算机408考研学长的初试复试经验。强调考研前要认清自己和学校,合理选择报考院校。初试分数尽量高,复试分机试、笔试和面试,面试关键在于专业能力,科研实践情况尤为重要。还给出了初试复习时间、资料及常见问题解答等建议。

纯手工秘制阿胶糕~吴老师

问遍了身边的面试官朋友,我整理出这份 Java 集合高频面试题(2021年最新版)

本文是针对 Java 集合框架,尤其是 HashMap 的深度解析与高频面试题集锦。内容涵盖 HashMap 的底层数据结构、扩容策略、线程安全性及面试中常问的红黑树、并发问题等。通过对 HashMap 的详细介绍,帮助读者深入理解其原理,并为面试做好准备。

bsegebr
评论 39
收藏 已收藏
分享
返回顶部
lonoaer
非技术区 830 成员 53,568 内容