- 浏览: 373522 次
- 性别:
- 来自: 四川
文章分类
- 全部博客 (247)
- 数据库以及sql (11)
- java (48)
- 爬虫学习 (20)
- java编程 (28)
- python编程以及安装和配置 (27)
- oracle数据库 (32)
- mongodb基本操作 (4)
- linux学习 (7)
- easyUI (2)
- nodeJs (8)
- python学习 (16)
- 其他 (13)
- hadoop (1)
- svn (1)
- 汉字 (1)
- windows (2)
- jsp (5)
- fiddler (1)
- ETL (1)
- teamviewer (1)
- maven (4)
- GIT (2)
- datagrip (1)
- ocr (1)
- redis (3)
- mysql (3)
- linux (1)
- 数据服务 (0)
最新评论
线程与进程的优缺点:
首先,要实现多任务,通常我们会设计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编程模型来实现多任务是一个主要的趋势。
首先,要实现多任务,通常我们会设计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编程模型来实现多任务是一个主要的趋势。
发表评论
-
是什么java多态
2018-11-14 13:43 679Java多态 例1.1+1=2 例2."1&quo ... -
经纬度转换
2018-09-25 13:57 0package com.teamdev.jxbrowser.c ... -
java连接池技术
2018-09-04 14:26 371转:https://www.cnblogs.com/xdp-g ... -
java 提取url字符串中的域名
2018-08-30 15:24 7366package com.teamdev.jxbrowser.c ... -
java多线程中锁(lock)、wait、notify()的使用
2018-07-13 11:31 5734package com.kai.多线程间的通信; impor ... -
java多线程间的通信实例
2018-07-13 11:00 1414----线程间的通信 public class ListAd ... -
volatile关键字
2018-07-12 11:20 639volatile:使变量在多个线程间可见 public c ... -
java根据百度url获取真正的网页地址
2018-07-09 11:26 1062/** * 根据百度url,获取原本url * @th ... -
java中的base64字符流与图片的相互转换
2018-06-29 13:27 1252//base64字符串转化成图片 public sta ... -
java去除图片水印的解决办法
2018-06-28 10:54 3333原文地址:http://www.oicqzone.com/pc ... -
java中的中文字符转URLEncode
2018-06-26 11:26 789String urlTypeName =java.net.UR ... -
java下载图片到本地实例
2018-06-25 15:34 1348public static void main(String[ ... -
Myeclipse中如何更改jsp默认的打开方式
2018-05-04 17:44 6481.打开myeclipse 2.点击上方的 window-&g ... -
java三大范式
2018-05-02 09:50 747参考地址:https://www.cnblogs.com/ja ... -
请求中设置代理IP
2018-04-18 16:24 964(不能直接JVM设置代理 System.getProperti ... -
java获取当前时间的时间戳
2018-04-08 09:25 1495package com.teamdev.jxbrowser.c ... -
java四种线程池实例 (kaigege)
2018-03-28 11:03 707Java通过Executors提供四种线程池: 1.newCa ... -
java获取IP地址(windos,linux)皆可
2018-03-28 09:44 802package com.teamdev.jxbrowser.c ... -
post 请求
2018-02-05 16:32 521public static void trustEveryo ... -
java robot控制鼠标和键盘(笔记本中打印 i love you)(滑动)
2018-01-25 16:57 2090package robot_java; import jav ...
相关推荐
描述了操作系统中多线程和多进程的主要优缺点,对于学习操作系统有很好帮助。
### 线程与进程详解 #### 一、基本概念 **进程**是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。进程是操作系统中最基本的执行单元之一,拥有独立的地址...
在计算机编程中,多线程和多进程是两种常见的并发执行模型,它们分别有不同的应用场景和优缺点。本文将深入探讨在线程中启动进程这一技术,以及如何通过管道(pipe)来实现线程与子进程之间的通信。 首先,我们来...
- 可能还会有并发模型的选择指南,比较多线程和多进程的优缺点,以及何时选择哪种模型。 - 可能包含解决线程或进程间同步问题的案例,如死锁和竞态条件的预防。 通过学习和实践这些例程,开发者可以更好地理解...
这些方法各有优缺点,需要根据具体需求选择。 3. **线程同步与互斥**:为了防止多个线程同时访问共享资源导致数据不一致,我们需要使用同步机制,如锁(互斥锁、读写锁)、信号量、条件变量等。例如,Python的`...
- **作业调度**:深入理解各种调度策略的优缺点,如何在不同的应用场景下选择合适的调度算法。 - **I/O管理**:磁盘调度算法,中断处理,DMA(直接存储器访问)和缓冲技术的理解。 在“马越.doc”这个文档中,可能...
总之,进程和线程是操作系统调度和执行程序的两种不同方式,它们各有优缺点,理解和掌握它们的区别有助于优化软件性能和提高系统资源利用率。在设计和实现多任务应用时,合理利用进程和线程的优势,能够提升系统的...
本篇文章将深入探讨Python中的多线程和多进程概念,以及它们在实际应用中的优缺点。 首先,我们要理解“线程”和“进程”的基本概念。线程是程序执行的最小单位,一个进程中可以有多个线程,它们共享同一份内存空间...
在这里,我们将详细讨论多线程和多进程的相关知识点,帮助你理解它们的基本概念、优缺点以及实际应用。 首先,让我们来了解一下多线程。线程是程序执行的最小单元,每个线程都包含自己的程序计数器、栈和局部变量。...
#### 二、线程与轻量级进程概述 1. **线程(Thread)**: - 定义:线程是在进程中独立运行的最小单位,共享同一进程的地址空间和其他资源。 - 优点: - 提高了应用程序的并发性,允许进程内部的任务并行执行。 ...
在计算机系统设计中,服务器模型是决定服务处理方式的关键因素,主要分为进程服务器模型和线程服务器模型。这两种模型在处理并发请求、资源管理和性能优化方面各有特点。 **进程服务器模型** 进程服务器模型...
"Python多线程与多进程笔记1" Python 多线程和多进程是 Python 编程中两个重要的概念,它们分别对应着不同的并发编程模型。在本文中,我们将详细介绍 Python 中的多线程和多进程,并对比它们的异同。 多进程 多...
常见的调度模型包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)、优先级调度等,每种模型都有其适用的场景和优缺点。 1.4.3 进程调度 进程调度主要关注就绪队列中的进程,根据调度算法选择下一个...
**线程的优缺点对比**: - **并发性**:多线程提供了更好的并发性,可以在等待I/O操作时执行其他任务,而单线程在进行I/O操作时会阻塞整个进程。 - **资源利用**:多线程能有效利用多核CPU,而单线程只能在一个核心...
基础面试是指考察面试者的基础知识,如指针使用、进程线程概念等。这种基础知识是软件开发的基础,但基础知识不一定能说明面试者能否胜任工作。基础知识只是局部性知识,而实际工作需要综合性能力。 性格面试是指...
操作系统第二章进程与线程 进程的概念: * 进程是进程实体的运行过程 * 进程实体是静态的,一个进程实体由PCB、程序段、数据段组成 * 进程实体反映了进程在某一时刻的状态 * 进程是系统进行资源分配和(未引入线程...
【Python多线程与多进程】是编程领域中关于并发执行任务的重要概念,尤其是在Python这样的高级编程语言中。本文由何胜于2016年4月25日撰写,通过计算机与工厂的类比来解释这两个概念。 计算机通常被视为单核工厂,...
线程的优缺点: 优点: - 资源共享:线程之间可以轻松共享内存,减少了数据交换的时间和复杂性。 - 高并发:多线程可以在多核处理器上并行执行,提高系统效率。 - 快速切换:线程切换的开销比进程切换小,因为它们...