面试题:1,进程和线程的区别?什么时候用进程?什么时候用线程?为什么你的项目中用的是线程?为什么不用进程?如果只有进程,对你这个项目有没有影响?

答:首先得知道什么是进程什么是线程,我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例,即它是程序已经执行到课中程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。进程——资源分配的最小单位,线程——程序执行的最小单位。

线程进程的区别体现在4个方面:

第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高,但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。

第二:体现在通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便。。

第三:体现在CPU系统上面,线程使得CPU系统更加有效,因为操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。

第四:体现在程序结构上,举一个简明易懂的列子:当我们使用进程的时候,我们不自主的使用if else嵌套来判断pid,使得程序结构繁琐,但是当我们使用线程的时候,基本上可以甩掉它,当然程序内部执行功能单元需要使用的时候还是要使用,所以线程对程序结构的改善有很大帮助。

 

进程与线程的选择取决以下几点:1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

 

因为我的项目中需要对数据段的数据共享,可以被多个程序所修改,所以使用线程来完成此操作,无需加入复杂的通信机制,使用进程需要添加复杂的通信机制实现数据段的共享,增加了我的代码的繁琐,而且使用线程开销小,项目运行的速度快,效率高。

 

如果只用进程的话,虽然安全性高,但是对代码的简洁性不好,程序结构繁琐,开销比较大,还需要加入复杂的通信机制,会使得我的项目代码量大大增加,切换速度会变的很慢,执行效率降低不少。。

评论 6 您还未登录,请先 登录 后发表或查看评论
说法一进程具有一定独立功能程序关于某个数据集合上一次运行活动,进程系统进行资源分配调度一个独立单位. 线程进程一个实体,CPU调度分派基本单位,进程更小能独立运行基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少资源(如程序计数器,一组寄存器栈),它可与同属一个进程其他线程共享进程所拥有全部资源. 一个线程可以创建撤销另一个线程;同一个进程多个线程之间可以并发执行 说法二进程线程由操作系统所体会程序运行基本单元系统利该基本单元实现系统并发性。进程线程区别在于 简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 线程划分尺度小于进程使得多线程程序并发性高。 另外进程在执行过程中拥有独立内存单元而多个线程共享内存从而极大地提高了程序运行效率。 线程在执行过程中与进程区别。每个独立线程有一个程序运行入口、顺序执行序列程序出口。但线程不能够独立执行必须依存在应程序中由应程序提供多个线程执行控制。 从逻辑角度来看线程意义在于一个应程序中有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立来实现进程调度管理以及资源分配。这就进程线程重要区别。 说法三线程共存于应程序中现代操作系统中基本特征重要标志。过UNIX操作系统读者知道进程在UNIX操作系统中每个应程序执行都在操作系统内核中登记一个进程标志操作系统根据分配标志程序执行进行调度系统资源分配进程线程什么区别 进程线程由操作系统所体会程序运行基本单元系统利该基本单元实现系统并发性。进程线程区别在于 线程划分尺度小于进程使得多线程程序并发性搞。 另外进程在执行过程中拥有独立内存单元而多个线程共享内存从而极大地提高了程序运行效率。 线程在执行过程中与进程区别。每个独立线程有一个程序运行入口、顺序执行序列程序出口。但线程不能够独立执行必须依存在应程序中由应程序提供多个线程执行控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

StudyTaoo

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值