`

线程与进程的优缺点

    博客分类:
  • java
阅读更多
线程与进程的优缺点:
首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。

如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。

如果用多线程实现Master-Worker,主线程就是Master,其他线程就是Worker。

多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多进程模式。

多进程模式的缺点是创建进程的代价大,在Unix/Linux系统下,用fork调用还行,在Windows下创建进程开销巨大。另外,操作系统能同时运行的进程数也是有限的,在内存和CPU的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题。

多线程模式通常比多进程快一点,但是也快不到哪去,而且,多线程模式致命的缺点就是任何一个线程挂掉都可能直接造成整个进程崩溃,因为所有线程共享进程的内存。在Windows上,如果一个线程执行的代码出了问题,你经常可以看到这样的提示:“该程序执行了非法操作,即将关闭”,其实往往是某个线程出了问题,但是操作系统会强制结束整个进程。

在Windows下,多线程的效率比多进程要高,所以微软的IIS服务器默认采用多线程模式。由于多线程存在稳定性的问题,IIS的稳定性就不如Apache。为了缓解这个问题,IIS和Apache现在又有多进程+多线程的混合模式,真是把问题越搞越复杂。


异步IO

考虑到CPU和IO之间巨大的速度差异,一个任务在执行的过程中大部分时间都在等待IO操作,单进程单线程模型会导致别的任务无法并行执行,因此,我们才需要多进程模型或者多线程模型来支持多任务并发执行。

现代操作系统对IO操作已经做了巨大的改进,最大的特点就是支持异步IO。如果充分利用操作系统提供的异步IO支持,就可以用单进程单线程模型来执行多任务,这种全新的模型称为事件驱动模型,Nginx就是支持异步IO的Web服务器,它在单核CPU上采用单进程模型就可以高效地支持多任务。在多核CPU上,可以运行多个进程(数量与CPU核心数相同),充分利用多核CPU。由于系统总的进程数量十分有限,因此操作系统调度非常高效。用异步IO编程模型来实现多任务是一个主要的趋势。
分享到:
评论

相关推荐

    多线程与多进程的优缺点比较

    描述了操作系统中多线程和多进程的主要优缺点,对于学习操作系统有很好帮助。

    线程与进程

    ### 线程与进程详解 #### 一、基本概念 **进程**是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。进程是操作系统中最基本的执行单元之一,拥有独立的地址...

    在线程中启动进程

    在计算机编程中,多线程和多进程是两种常见的并发执行模型,它们分别有不同的应用场景和优缺点。本文将深入探讨在线程中启动进程这一技术,以及如何通过管道(pipe)来实现线程与子进程之间的通信。 首先,我们来...

    多线程与多进程.rar

    - 可能还会有并发模型的选择指南,比较多线程和多进程的优缺点,以及何时选择哪种模型。 - 可能包含解决线程或进程间同步问题的案例,如死锁和竞态条件的预防。 通过学习和实践这些例程,开发者可以更好地理解...

    进程线程作业

    这些方法各有优缺点,需要根据具体需求选择。 3. **线程同步与互斥**:为了防止多个线程同时访问共享资源导致数据不一致,我们需要使用同步机制,如锁(互斥锁、读写锁)、信号量、条件变量等。例如,Python的`...

    操作系统答案进程、线程与作业课后习题

    - **作业调度**:深入理解各种调度策略的优缺点,如何在不同的应用场景下选择合适的调度算法。 - **I/O管理**:磁盘调度算法,中断处理,DMA(直接存储器访问)和缓冲技术的理解。 在“马越.doc”这个文档中,可能...

    线程和进程的区别共2页.pdf.zip

    总之,进程和线程是操作系统调度和执行程序的两种不同方式,它们各有优缺点,理解和掌握它们的区别有助于优化软件性能和提高系统资源利用率。在设计和实现多任务应用时,合理利用进程和线程的优势,能够提升系统的...

    浅析Python多线程与多进程的使用

    本篇文章将深入探讨Python中的多线程和多进程概念,以及它们在实际应用中的优缺点。 首先,我们要理解“线程”和“进程”的基本概念。线程是程序执行的最小单位,一个进程中可以有多个线程,它们共享同一份内存空间...

    编程思想之多线程与多进程共40页.pdf.zip

    在这里,我们将详细讨论多线程和多进程的相关知识点,帮助你理解它们的基本概念、优缺点以及实际应用。 首先,让我们来了解一下多线程。线程是程序执行的最小单元,每个线程都包含自己的程序计数器、栈和局部变量。...

    UNIX线程和轻量级进程

    #### 二、线程与轻量级进程概述 1. **线程(Thread)**: - 定义:线程是在进程中独立运行的最小单位,共享同一进程的地址空间和其他资源。 - 优点: - 提高了应用程序的并发性,允许进程内部的任务并行执行。 ...

    进程服务器模型和线程服务器模型

    在计算机系统设计中,服务器模型是决定服务处理方式的关键因素,主要分为进程服务器模型和线程服务器模型。这两种模型在处理并发请求、资源管理和性能优化方面各有特点。 **进程服务器模型** 进程服务器模型...

    Python多线程与多进程笔记1

    "Python多线程与多进程笔记1" Python 多线程和多进程是 Python 编程中两个重要的概念,它们分别对应着不同的并发编程模型。在本文中,我们将详细介绍 Python 中的多线程和多进程,并对比它们的异同。 多进程 多...

    进程、线程、调度详解教程

    常见的调度模型包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)、优先级调度等,每种模型都有其适用的场景和优缺点。 1.4.3 进程调度 进程调度主要关注就绪队列中的进程,根据调度算法选择下一个...

    单线程与多线程的区别

    **线程的优缺点对比**: - **并发性**:多线程提供了更好的并发性,可以在等待I/O操作时执行其他任务,而单线程在进行I/O操作时会阻塞整个进程。 - **资源利用**:多线程能有效利用多核CPU,而单线程只能在一个核心...

    程序员面试面试中的优缺点..pdf,这是一份不错的文件

    基础面试是指考察面试者的基础知识,如指针使用、进程线程概念等。这种基础知识是软件开发的基础,但基础知识不一定能说明面试者能否胜任工作。基础知识只是局部性知识,而实际工作需要综合性能力。 性格面试是指...

    操作系统第二章进程与线程.pdf

    操作系统第二章进程与线程 进程的概念: * 进程是进程实体的运行过程 * 进程实体是静态的,一个进程实体由PCB、程序段、数据段组成 * 进程实体反映了进程在某一时刻的状态 * 进程是系统进行资源分配和(未引入线程...

    Python多线程与多进程-shenghe201604251

    【Python多线程与多进程】是编程领域中关于并发执行任务的重要概念,尤其是在Python这样的高级编程语言中。本文由何胜于2016年4月25日撰写,通过计算机与工厂的类比来解释这两个概念。 计算机通常被视为单核工厂,...

    操作系统原理线程概念与应用 操作系统原理线程概念与应用

    线程的优缺点: 优点: - 资源共享:线程之间可以轻松共享内存,减少了数据交换的时间和复杂性。 - 高并发:多线程可以在多核处理器上并行执行,提高系统效率。 - 快速切换:线程切换的开销比进程切换小,因为它们...

Global site tag (gtag.js) - Google Analytics