进程和线程

  • 程序和进程的关系如同工厂和车间的关系,因为进程是正在运行中的程序,所以是正在进行生产作业的车间;一个工厂可以有多个车间,这些车间有的在运行有的可能不在运行,运行中的车间可以看做是进程;

  • 进程和线程的关系就如同生成车间和生产机床的关系,一个车间如果有多个机床(多线程),那么这些机床同时生产就可以提高效率,当然这些机床可以生产相同的产品也可以生产的是不同产品;

  • 那么多车间(多进程)和多机床(多线程)生产有什么关系和区别呢?首先多车间生产,它的材料是独享的(多进程在执行的时候,其所需数据都会在内存中独自创建一份);多机床的话它的材料是共享的(多线程共享一份数据,在使用的时候会加锁,会有等待时间);车间(进程)和机床(线程)都是在使用时创建,使用完后销毁,所以进程和线程的创建和销毁都会消耗资源和时间。而且这两者是共存的,线程是属于进程的,多进程和多线程也可以同时存在。

  • 进程和线程的执行都消耗cpu资源,对于进程而言,一个cpu核芯在一个时间点只能执行一个进程(不能拆分),所以单线程的进程就会对多线程cpu核芯造成浪费;多线程的进程可以充分发挥多线程cpu核芯的性能。

  • 我们以httpd服务对请求的处理模式为例:
    ①、prefork模式:一个进程处理一个请求(处理完该请求后该进程销毁),多个请求同时来的的时候需要创建多个进程处理;相对稳定,一个进程出现问题不会影响其它进程
    ②、worker模式:一个线程处理一个请求,多进程多线程处理
    ③、event模式:一个进程处理多个请求(同prefork模式的区别,这个进程中的多个请求基于事件驱动可以同时执行,即它没有那么频繁的创建销毁进程)

注:多进程和多线程难以说出绝对的优劣,因为一个进程中多个线程是可以发挥多线程cpu的功能,但是因为它的内存数据是线程共享的,在写一个数据的时候会加锁,也会浪费等待时间。所以具体情况还是根据测试结果而定。当然总的来说还是一个进程中有多个线程会好一些。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 9,223评论 0 5
  • 在之前的课程中,我们已经学习了进程相关的知识。进程是计算机程序被执行的一个实例(instance),一个进程可能由...
    夏威夷的芒果阅读 4,527评论 0 2
  • 1 概述 下面是维基百科上对进程和线程的解释: 进程(英语:process),是指计算机中已运行的程序。进程为曾经...
    yeonon阅读 3,535评论 0 0
  • 进程和线程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打...
    阙馨妍子阅读 1,616评论 0 1
  • 进程和线程 进程线程的区别1、进程是什么?是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点...
    HeartGo阅读 4,974评论 0 4

友情链接更多精彩内容