初步认识

当一个程序进入内存运行时,即变成一个进程。进程时处于运行过程中的程序。进程是操作系统进行资源分配和调度的一个独立单位。线程(thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程也被称为轻量级进程。线程在进程中是独立、并发的执行流。

多进程和多线程的区别

  • 一个进程可以有很多线程,每条线程并行执行不同的任务。因此多线程中,所有子线程的进程号相同;多进程中,不同的子进程进程号不同。
  • 多线程可以共享全局变量,多进程不能。在多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响;而多线程中,所有变量都由所有线程共享。
  • 同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。
  • 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
  • 进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。
  • 线程执行开销小,但是不利于资源的管理和保护。进程执行开销大,但是能够很好的进行资源管理和保护。
  • 两者均可并发执行。

多进程

每个事件片内将CPU 分配给某一个任务,时间片结束,CPU自动回收,再分配给另外的任务。从外部来看,所有的任务都是同时在执行,但在CPU上,任务是按照串行依次运行(单核CPU)。如果是多核,多个进程任务可以并行;但是在单核,多进程只能串行执行。

多进程的优点

  • 编程相对容易:通常不需要考虑锁和同步资源的问题
  • 内存隔离,一个进程崩溃不会影响其他线程,方便调试
  • 可以同时运行多个任务
  • 程序因IO阻塞时,可以释放CPU,让CPU为其他程序服务
  • 当系统有多个CPU时,可以为多个程序同时服务

多进程的缺点

  • 进程的创建和销毁过程需要消耗较多的计算机资源;
  • 逻辑控制复杂,需要和主程序交互;
  • 多进程调度开销比较大
  • 需要跨进程边界

多线程

如果一个子任务阻塞,程序可以将CPU调度到另外一个子任务进行工作。这样CPU还是保留在本程序中,而不是被调度到别的进程去。这样,提高了本程序所获得的CPU时间和利用率。

多线程的优点

  • 多线程开销小,提高了系统的并行性
  • 创建速度快,方便高效的数据共享
  • 线程更加轻量级,更容易切换
  • 多个线程更容易管理
  • 使用多线程可以把程序中占据时间长的任务放到后台去处理,如图片、视屏的下载多线程的缺点

多线程的缺点

  • 大量的线程降低代码的可读性
  • 更多的线程需要更多的内存空间
  • 当多个线程对同一个资源出现争夺时候要注意线程安全的问题
  • 没有内存隔离,单个线程崩溃会导致整个应用的退出

原文地址:http://www.cnblogs.com/jianghao000/p/16889136.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性