精华内容
下载资源
问答
  • 进程(process)和线程(thread)是操作系统的基本概念,但是...vs 线程 :一个进程可以包含多个线程" title="进程 vs 线程 :一个进程可以包含多个线程" style="border:0px; max-width:602px; height:auto; ma

    进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。

    最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。

    1.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

    2.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。

    3.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。

    4.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    一个车间里,可以有很多工人。他们协同完成一个任务。

    5.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    线程就好比车间里的工人。一个进程可以包括多个线程。

    6.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。

    7.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。

    8.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在门口排队,等锁打开再进去。这就叫"互斥锁"(Mutual exclusion,缩写 Mutex),防止多个线程同时读写某一块内存区域。

    9.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。

    10.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突。

    不难看出,mutex是semaphore的一种特殊情况(n=1时)。也就是说,完全可以用后者替代前者。但是,因为mutex较为简单,且效率高,所以在必须保证资源独占的情况下,还是采用这种设计。

    11.

    进程 <wbr>vs <wbr>线程 <wbr>:一个进程可以包含多个线程

    操作系统的设计,因此可以归结为三点:

    (1)以多进程形式,允许多个任务同时运行;

    (2)以多线程形式,允许单个任务分成不同的部分运行;

    (3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。

    (完)

    展开全文
  • 在任务管理器或资源监视器中,可以查看控制台占用的的进程(PID=8504),也可以看它的线程数为13。所以,当前的线程ID编号并不在任务管理或资源监视器中显示。任务管理或资源监视器中,只显示线程数13。    .....

    Vs启动控制台后,可以打印当前的线程ID=9,或ID=10 或ID=13。

    在任务管理器或资源监视器中,可以查看控制台占用的的进程(PID=8504),也可以看它的线程数为13。所以,当前的线程ID编号并不在任务管理或资源监视器中显示。任务管理或资源监视器中,只显示线程数13。

     

     

    展开全文
  • 一条线程指的是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每条线程并行执行不同的任务。他们彼此之间交替执行,称为多线程; 多线程  多线程(英语:multithreading),是指从软件或
  • JAVA多线程——线程,进程,多线程 进程(Process) 进程是执行程序的一次执行过程,是一个动态的概念。...线程就是一个独立执行的路径,通常在一个进程可以包含多个线程一个进程中至少包含一个线程

    JAVA多线程——线程,进程,多线程

    进程(Process)

    进程是执行程序的一次执行过程,是一个动态的概念。是由系统资源来分配。

    程序是一个静态的概念,程序运行起来才有线程。程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程main(),gc线程(守护线程);

    在一个进程中,如果开辟了多个线程,线程的运行由调度器CPU安排调度,CPU是与操作系统紧密相关的,先后顺序是不能人为干预的。

    线程(Thread)

    线程就是一个独立执行的路径,通常在一个进程中可以包含多个线程,一个进程中至少包含一个线程,不然没有存在意义。线程是CPU调度和执行的单位。

    主线程main()为系统的入口,用于执行整个程序

    对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;

    线程会带来额外的开销,如CPU调度时间,并发控制开销

    每个线程在自己的工作内存交互,内存控制不当会造成数据不一致

    多线程(Multithreading)

    很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只能执行一个代码,因为切换的很快,所以就有同时执行的错觉。

    多线程和普通方法调用的不同

    • 多线程:多条执行路径,主线程和子线程并行交替执行
    • 主线程:只有主线程一条执行路径
    展开全文
  • 应用程序是windos下的。 不是结束进程。 不是修改代码,我只有exe(ps:我有源程序,但是我要当做测试人员无源程序)。...目的是想作为一个测试人员,看进程中的一个线程崩掉会不会导致整个程序崩掉。 谢谢。
  • 包含关系:一个进程可以由很多个线程组成,且至少有一个主线程,其他是子线程,线程依附于进程。 内存分配、开销:进程有自己独立的地址空间,线程使用和进程相同的地址空间,共享进程所有的资源,每个线程也有自己...

    参考文献:https://blog.csdn.net/linraise/article/details/12979473

    进程和线程的区别

    概念区别:进程是系统资源分配的最小单元。线程是CPU调度和执行的最小单元,在每个时间片中只有一个线程执行。线程又被称为轻量级进程。

    包含关系:一个进程可以由很多个线程组成,且至少有一个主线程,其他是子线程,线程依附于进程。

    内存分配、开销:进程有自己独立的地址空间,线程使用和进程相同的地址空间,共享进程所有的资源,每个线程也有自己的堆栈和局部变量,因此CPU切换线程的代价比切换进程小很多,同时创建线程的开销也小很多。

    通信:线程间通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程间需要进程间通信IPC。

    健壮性:多进程更健壮,进程间相互独立,所有进程间的crash不会相互影响。

    多进程和多线程区别

    多进程 多线程
    数据共享、同步 数据相互独立;共享复杂,需要IPC;同步简单 多线程共享进程数据;共享简单;同步复杂;
    内存、CPU 占用内存多,切换复杂、CPU利用率低; 占用内存少,切换简单、CPU利用率高;
    创建、销毁、切换 复杂,速度慢 简单,速度快
    可靠性 进程间不会相互影响 一个线程crash会导致整个进程挂掉
    分布式 应用于多核、多机分布;扩展到多台机器比较简单; 应用于多核分布;
    编程、调试 简单 复杂
    多进程 多线程
    优点 内存隔离,单个进程的异常不会导致整个应用的崩溃 提高系统的并行性,并且开销小
    缺点 进程间调用,通信和切换的开销大 没有内存隔离,单个线程的崩坏会导致整个进程的崩溃,发生bug时,定位不方便
    使用 目标子功能之间交互少 存在大量IO,网络等耗时操作,或者需要和用户交互时,使用多线程有利于提高系统的并行性

    如何选用多进程、多线程?

    • 需要频繁创建和销毁,优先使用线程。
    • 需要大量计算,优先使用线程。
    • 强相关的处理使用线程,弱相关的处理使用进程。
    • 可能扩展到多机分布使用进程,多核分布使用线程。
    展开全文
  • 线程简介 任务 同时做几件事 线程 ...普通方法调用和线程:普通方法只有主线程一条执行路径,线程执行路径主线程和子线程并行交替执行(效率高)...通常一个进程可以包含若干个线程,当然一个进程中至少包含一个
  • 一个进程至少有一个线程,一个进程可以运行多个线程多个线程可共享数据。 多线程 多线程:多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。 ...
  • 多线程-进程 线程

    2017-09-06 00:23:00
    一个进程又是由多个线程所组成的。 线程 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 多线程 多线程是...
  • 多线程 vs 多进程 ...一个进程的独立运行片段,一个进程可以多个线程 轻量化的进程 一个进程的多个线程间共享数据和上下文运行环境 共享互斥问题 全局解释器锁(GTL) python 代码的执行是由python 虚拟...
  • 多线程多进程

    2021-03-30 16:51:26
    多线程与进程 ...一个进程可以包含多个线程,但是线程不能包含多个进程。线程自己不拥有 系统资源,在单个程序中同时运行多个线程完成不同的工作,称为多线程。 线程与进程的区别 线程和进程的区别在于,子进
  • 一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存 什么是线程安全 一个线程的修改被另一个线程的修改覆盖掉。 python中哪些操作是线程安全的 一个操作可以在多线程环境中使用,并且获得正确...
  • 一个进程可以包含多个线程,线程依赖进程存在,并共享进程内存 什么是线程安全 一个线程的修改被另一个线程的修改覆盖掉。 python中哪些操作是线程安全的 一个操作可以在多线程环境中使用,并且获得正确的结果。...
  • 它是一个独立的实体,且每个进程都占有独立的内存空间。 线程是指操作系统能够进行运算调度的最小单位,被包含在进程中,是进程中实际运作的单位。 2.线程和进程的区别 答:①.进程是系统资源分配和调度的基本单位,...
  • 通常在一个进程可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和...
  • 目录概述进程(Process)与线程(Thread)特点 概述 普通方法与线程的区别 普通方法在调用某个方法的时候,会停止现在的工作,只执行调用方法中的...通常在一个进程可以包含若干个线程,当然一个进程中至少有一
  • 线程多线程进程

    2021-05-17 14:00:02
    以一个QQ视频播放器为例:可以播放视频、可以收看弹幕、可以听声音:这个是在系统内部执行的一个进程,这个进程中包含多个线程来执行:播放视频、收看弹幕、听声音 一个进程至少一个线程; 注意 很多多线程都...
  • 多线程多进程

    2020-11-27 23:00:54
    一条线程指的是进程中一个单一顺序的控制流,一个进程可以并发多个线程,每条线程并行执行不同的任务。一个线程是一个execution context(执行上下文),即一个cpu执行时所需要的一串指令。 进程 一个程序的执行...
  • 多进程多线程

    2021-04-08 10:45:17
    一个进程可以有很多线程,每条线程并行执行不同的任务。 同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。 同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资.
  • C#线程 多线程 进程

    2019-07-17 07:54:00
    进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源. 应用程序域: 使用.NET建立的可执行程序 *.exe,并... 在一个进程可以包含多个应用程序域,一个应用程序域可以装载一个可...
  • 一个进程可以包含多个线程,但至少包含一个线程 进程是资源分配的基本单位 java默认有两个线程,分别是main线程(即主线程)和GC(垃圾回收) 线程:线程是进程中执行运算的最小单元,以QQ为例,QQ.exe是一个进程,在...
  • 一个进程可以同时访问多个程序 每个进程有独立的虚拟地址空间,不同进程内,即使使用相同内存地址实际也是不同的物理内存 进程由两部分组成 1 内核对象 2 地址空间 包含所有的可执行模块 或 DLL模块的...
  • 多线程多进程

    2019-03-06 15:09:49
    进程对于线程是唯一的,而一个进程可以多个线程。程序执行的时候每隔一定时间在多线程之间执行,比如第一个线程执行到0.01秒,马上暂停跳到下一个线程开始执行,又执行到0.01秒,返回第一个线程从0.01秒开始执行,...
  • 1、进程可以理解成程序的一次执行(即动态的),所以一个程序可以对应一个或多个进程(程序的多次执行),而一个进程往往包含一个或多个线程 2、每个进程有独立的地址空间,包含资源。而线程共享进程的资源,可以把...
  • 1. 进程、线程的对比 进程,能够完成多任务,比如: 一台电脑上可以运行登录多个QQ 线程,能够完成多任务,比如: 一个... 一个进程默认提供一个线程,进程可以创建多个线程 进程里面包含着线程 3.区别对比 进...
  • 多线程多进程 概述

    2020-12-26 21:30:12
    使用多进程和多线程编程,可以同时处理多个任务,充分使用CPU性能,节约时间等。很多编程任务到最后都发展到需要同时处理多任务,就比如APP自动化测试,如果...#一个进程可以包含多个线程,但是线程不能包含多个进程 #
  • 线程进程多线程

    2018-09-20 15:21:39
    一个进程可以并发多个线程,每条线程并行执行不同的任务。是一个基本的cpu执行单元,它必须依托于进程存活。进程: 进程是指一个程序在给定数据集合的一次执行过程,是系统进行资源分配和运行调用的独立单元。操作...
  • 线程:本质就是一条执行路径,可以理解为是进程的子任务【迅雷、百度网盘多资源下载】, 一个进程可以只包含一个线程,也可以包含多个线程 2)问题:默认java虚拟机进程开辟了几条线程? 答:至少有两条线程,主线程[main方法...
  • 进程线程多线程

    2018-03-20 15:20:00
    一个进程又是由多个线程所组成的。 什么是线程? 线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。 什么是多线程? 多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,367
精华内容 2,546
关键字:

一个进程可以包含多个线程