线程与进程 深入剖析与点拨

本文旨在介绍线程与进程的差别,如有理解不当,请不吝指教。




1. 什么是进程?
进程就是一个正在执行的程序的实例,包括程序计数器,寄存器和变量的当前值。
进程用于把资源集中在一起, 多个进程共享物理内存,磁盘,打印机和其他资源。


2. 引入线程的目的:实现并行实体共享同一个地址空间和所有可用数据的能力。换句话说在同一个进程中所有的线程共享地址空间,由于线程只拥有寄存器用来保存线程当前的工作变量,所以更加轻量级。


3. 时钟中断, 时钟中断是针对进程的, 时钟中断的目的是实现并行(伪并行), 这样不同的进程都有机会获得时间片而运行。但是在一个单独的进程内部是没有时钟中断的,也就是说不可能在一个线程运行后再让其他线程运行,如果线程不释放CPU并且是CPU密集的, 那么使用多线程则无意义。(比如设计一个算法, 耗费bigO时间O(n), 并且是时间秘籍的, 只有一个CPU的情况下使用多线程是毫无意义的,或者说基本不会提高算法的执行时间)。




4. 进程间的通信模型要比线程复杂。但是如果两个或多个进程共享其全部或大部分的地址空间,进程和线程之间的差别就变得模糊起来,但无论怎样,两者的差别还是有的。共享一个公共地址空间的两个进程仍旧有各自的打开文件,白净定时器以及其他一些单个进程的特性,而在单个进程中的线程,则共享进程全部的特性,另外,共享一个公共地址空间的多个线程不会拥有用户级线程的效率,这一点是不容质疑的。


5. 线程与进程还有一个关键差别,在线程完成运行时,例如,在调用thread_yield是,pthread_yield代码可以把该线程的信息保存在县城表中,进而它可以调用线程调度程序来选择另一个要运行的线程。保存该线程状态的过程和调度程序都是本地过程,所以启动他们比进行内核调用效率更高。并一方面,不需要陷阱,不需要上下文切换,也不需要对内存高速缓存进行刷新,这就使得线程调度非常快捷。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值