码迷,mamicode.com
首页 > 编程语言 > 详细

浅谈进程与线程

时间:2018-02-19 18:59:50      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:时间   因此   总结   多个   基本   程序   计算   工具   导致   

(一)两者的定义

  进程:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元。没有运行的程序不能算是一个进程。

  线程:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。每个进程至少有一个线程。

(二)两者的区别

  (1)进程享有自己的独立内存和资源,线程共享所在进程(主线程)的资源。

  (2)创建进程所需要消耗的时间要大于线程,且进程消耗的系统资源更多。

  (3)进程间的通信需要借助其他工具(例如管道、消息队列、共享内存等),线程间由于共享资源可以直接通信。

  (4)操作系统通过调度切换进程或线程来实现高并发,进程之间的切换时间要远大于线程,这也是导致多线程被提出的原因。

  (5)在多线程中一个线程死掉会导致该进程下所有的线程都死掉,而进程不会,因此进程比线程要健壮很多。

  (6)多线程由于共享资源,因此在执行过程中可能出现多个线程同时处理某一资源,导致获得的结果错误,因此在多线程中经常需要引入锁机制,多进程一般不需要加锁。

总结:

  线程由于创建速度、切换速度快,且不占据太多的系统资源,因此在执行高并发的 I/O 操作具有较大的优势,但是线程的数量不宜太多,当线程太多时,大量的时间被用在了线程间的切换上。但是在计算密集型上一般采用多进程(进程的数量最好和计算机的核心数相等)来执行,因为计算密集型很消耗CPU,为保证CUP的充分利用,要尽量减少CPU做其他的工作(比如调度进程和线程)。

 

浅谈进程与线程

标签:时间   因此   总结   多个   基本   程序   计算   工具   导致   

原文地址:https://www.cnblogs.com/jiangxinyang/p/8454194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!