精华内容
下载资源
问答
  • 进程线程

    2019-10-06 16:03:27
    目录 计算机的核心是CPU,CPU承担了...进程中包含的执行单元叫线程,一个进程可以包含多个线程。 一个线程中内存空间是共享的,每个进程里的线程都可以使用这个共享空间,一个线程在使用这个共享空间的时...

    目录

    1. 计算机的核心是CPU,CPU承担了所有的计算任务

    2. 一个CPU核心一次只能执行一个任务,多个CPU核心可以同时执行多个任务

    3. 一个CPU一次只能执行一个进程,其他进程处于非运行状态

    4. 进程中包含的执行单元叫线程,一个进程可以包含多个线程。

    5. 一个线程中内存空间是共享的,每个进程里的线程都可以使用这个共享空间,一个线程在使用这个共享空间的时候,其他线程必须等它结束。

    6. 通过“锁”实现,作用就是防止多个线程使用这个内存空间,先使用的线程会将空间上锁,其他线程就在门口等待,打开锁再进去。

    7. 进程:表示程序的一次执行

    8. 线程:CPU运算的基本调度单位

    9. GIL:全局解释器锁,Python里面的通行证,而且只有一个,拿到通行证的线程才可以执行。

    10. Python的多线程试用范围:大量密集的I/O处理

    11. Python的多进程:大量的密集并行计算

    12. 线程的概念

      (1)进程内的一个执行单元

      (2)操作系统中一个可调度的实体

      (3)进程中相对独立的一个控制流序列

      (4)执行时的现场数据和其他调度所需的信息。

    13. 再论main函数

      (1)C/C++程序被执行后从main函数开始运行。

      (2)其运行过程:

      (3)线程是进程使用CPU资源的基本单位。

    14. 深入理解进程和线程

      (1)进程中可以存在多个线程并行执行,共享进程资源

      (2)线程是被调度的执行单元,而进程不是调度单元。

      (3)线程不能脱离进程单独存在,只能依赖于进程运行。

      (4)线程有生命期,有诞生和死亡。

      (5)任意线程都可以创建其它新的线程。

    15. 小结

      (1)程序是物理存储空间中的数据文件

      (2)进程程序运行后得到的执行实体

      (3)线程是进程内部的具体执行单元

      (4)一个进程内部可以有多个线程存在

      (5)进程是操作系统资源分配的基本单位

      (6)线程是操作系统调度执行的基本单位

    转载于:https://www.cnblogs.com/kolane/p/11538086.html

    展开全文
  • 线程进程初识

    2017-07-08 23:11:39
    进程线程区别 1.调动执行:线程是操作系统调动执行的基本单位,在引入线程的操作系统会中,进程一般不再是可调动分配的...4,数量关系:一个进程可以包含一个或多个线程,一个线程只能属于一个进程一个进程


    进程线程区别


    1.调动执行:线程是操作系统调动执行的基本单位,在引入线程的操作系统会中,进程一般不再是可调动分配的基本单位
    2,资源拥有:进程拥有资源,线程基本不拥有资源,它的运行资源取自于其所属进程所拥有的情报
    3,地址空间:不同进程的地址空间是相互独立的,而隶属于统一进程的各线程共享同一地址空间
    4,数量关系:一个进程可以包含一个或多个线程,一个线程只能属于一个进程,一个进程中的线程·对另一个进程是不可见的
    5,通信关系:进程间的通信必须使用操作系统提供的进程间通信地址,而同一进程中的各线程可以通过直接读写数据站(比如全局变量)来进行通信






    线程优点:
    1,创建时间短
    2,开销少
    3,切换快
    4,通信效率高
    展开全文
  • 线程进程

    2019-04-04 17:30:22
    线程和进程 进程 进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中) 进程(process)是一块包含...线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程...

    线程和进程

    进程

    • 进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)
    • 进程(process)是一块包含了某些资源的内存区域。操作系统利用进程把它的工作划分为一些功能单元。
    • 进程中所包含的一个或多个执行单元称为线程(thread)。进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。
    • 线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。

    线程

    • 一个线程是进程的一个顺序执行流
    • 同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈。线程在切换时负荷小,因此,线程也被称为轻负荷进程。一个进程中可以包含多个线程。

    进程与线程的区别

    • 一个进程至少有一个线程。
    • 线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率。
    • 线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
    • 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看作多个独立的应用来实现进程的调度和管理以及资源分配。

    线程使用的场合

    • 线程通常用于在一个程序中需要同时完成多个任务的情况。我们可以将每个任务定义为一个线程,使他们的已一同工作。
    • 也可以用于在单一线程中可以完成,但是使用多线程可以更快的情况,比如下载文件。

    多线程

    并发原理:

    • 多个线程“同时”运行只是我们感官上的一种表现。事实上线程是并发运行的,os将时间划分为很多时间片段(时间片),尽可能均匀分配给每一个线程,获取时间片段的线程被cpu运行,而其他线程全部等待。所以微观上是走走停停的,宏观上都在运行。这种现象叫并发,但不是绝对意义上的“同时发生”。
    • 多线程将代码执行的方式改变了,将原有的“串行操作”改为了“并行操作”

    线程的状态图:

    在这里插入图片描述

    创建线程

    线程有两种创建方式:

    1. 继承Thread从写run方法
      - 线程的启动和调用
      - 启动线程时要调用线程的start方法。
      - 注意:不要直接调用run方法。
      - 当start方法调用完毕后,该线程纳入到线程调度器中,一旦分配到时间片,那么它的run方法会自动被调用
      - 这种创建线程的方式有两个设计不足:
      1. 由于java是单继承的,这导致若继承了线程就无法再继承其它类去复用方法,这在实际开发中很不方便。
      2. 直接从写run方法来定义线程任务会导致线程与任务存在一个必然的耦合关系,不利于线程的重用。

      public static void main(String[] args) {
      	Thread1 t1 = new Thread1();
      	Thread2 t2 = new Thread2();
      
      	t1.start();
      	t2.start();
      	
      }
      class Thread1 extends Thread{
      	public void run() {
      		for(int i=0;i<1000;i++) {
      			System.out.println("hello");
      		}
      	}
      }
      class Thread2 extends Thread{
      	public void run() {
      		for(int i=0;i<1000;i++) {
      			System.out.println("nihao");
      		}
      	}
      }
      
    2. 第二种创建线程的方式:实现Runable接口单独定义线程任务

    
    public class ThreadDemo2 {
    
    	public static void main(String[] args) {
    		MyRunnable1 r1 = new MyRunnable1();
    		MyRunnable2 r2 = new MyRunnable2();
    		
    		Thread t1 = new Thread(r1);
    		Thread t2 = new Thread(r2);
    		t1.start();
    		t2.start();
    	}
    
    }
    class MyRunnable1 implements Runnable {
    	public void run() {
    		for(int i=0;i<1000;i++) {
    			System.out.println("hello");
    		}
    	}
    }
    
    class MyRunnable2 implements Runnable{
    	public void run() {
    		for(int i=0;i<1000;i++) {
    			System.out.println("NIhao");
    		}
    	}
    }
    
    1. 使用匿名内部类定义
    public static void main(String[] args) {
    		Thread t3 = new Thread() {
    			public void run() {
    				for(int i=0;i<1;i++) {
    					System.out.println("开门啊!");
    				}
    			}
    		};
    		
    		Thread t1 = new Thread(new Runnable() {
    			public void run() {
    				for(int i=0;i<1;i++) {
    					
    					System.out.println("别躲在里面不出声");
    				}
    			}
    		});
    		
    		Runnable r2 = new Runnable() {
    			public void run() {
    				for(int i=0;i<1;i++) {
    					System.out.println("我知道你在家!");
    				}
    			}
    		};
    		Thread t2 = new Thread(r2);
    		
    		t1.start();
    		//Thread x = Thread.currentThread();
    		
    		t2.start();
    		t3.start();
    		//System.out.println(x);
    	}
    

    线程操作API

    • 线程提供了一个静态方法:static Thread currentThread()
      该方法可以获取运行这个方法的线程(它写在哪个方法里就是获取哪个方法的线程)
    • sleep阻塞:static void sleep(long ms)
      • 该方法可以让运行这个方法的线程进入阻塞状态指定毫秒,当超时后线程会自动回到RUNNABLE状态等待再次并发运行
      • sleep方法要求处理中断异常。当一个线程调用sleep方法处于阻塞状态的过程中,若此时该线程的中断方法被调用:interrupt(),那么此时该线程的睡眠阻塞会被立即打断,并在sleep这个方法处抛出中断异常。

    注意:JDK8之前有一个要求(JDK8不再要求):当一个方法的局部内部类(定义在方法里的内部类)中引用了这个方法的其他局部变量时,这个变量必须声明为final的,这其实时由于JVM内存分配问题导致的。

    • 线程的优先级:priority
      • 线程的优先级有10个等级,分别用整数1-10表示。1为最低,10为最高,5为默认值
      • 理论上优先级越高的线程获取CPU时间片的次数越多。
    展开全文
  • 线程进程

    2016-08-31 09:20:53
    一个程序至少有一个进程,而一个进程里面至少有一个线程。 进程是包含了某些资源的内存区域。操作系统利用进程,把他的工作划分为一些功能单元。进程中的一个或多个执行单元成为线程。进程中还包含了一个虚拟的地址...

    一个程序至少有一个进程,而一个进程里面至少有一个线程。
    进程是包含了某些资源的内存区域。操作系统利用进程,把他的工作划分为一些功能单元。进程中的一个或多个执行单元成为线程。进程中还包含了一个虚拟的地址空间,该空间只能被他包含的线程访问。
    线程是指进程内的一个执行单元,也是进程内的可调度实体.
    与进程的区别:
    (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
    (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
    (3)线程是处理器调度的基本单位,但进程不是.
    4)二者均可并发执行.

    进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:

    简而言之,一个程序至少有一个进程,一个进程至少有一个线程.
    线程的划分尺度小于进程,使得多线程程序的并发性高。
    另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
    线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
    从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

    进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
    一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

    展开全文
  • 进程线程

    2021-02-18 14:35:15
    线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程线程。主线程将执行运行时宿主, 而运行时宿主会负责载入CLR。 应用程序...
  • TCP通信,多线程基础 什么是进程 -进程是操作系统中运行的一个任务(一个应用程序运行在一个进程中)。 -进程是一块包含了某些资源的...-线程只能归属于一个进程并且它只能访问该进程所拥有的资源。当操作系统创建一...
  • API-线程进程

    2018-09-12 22:55:03
     进程中所包含的一个或多个执行单元称为线程,一个线程就是进程中的一个顺序执行流。 进程拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问。即同一个进程 中的多个线程共享一块内存空间和一组系统资源...
  • Java 线程进程

    2020-08-25 14:53:07
    线程只能归属于一个进程,并且它只能访问该进程所拥有的资源,当操作系统创建一个进程后,该进程会自动申请一个名为主线程或者首要线程的线程。 2、什么是线程:thread 一个线程是进程的一个顺序执行流。 同类的多个...
  • java 进程线程

    2018-11-13 10:49:25
    进程是操作系统中运行的一个任务(一个任务程序运行在一个...线程只能归属于一个进程只能访问该进程拥有的资源。当操作系统创建一个进程后,该进程会自动申请一个名为主线程或首要线程的线程。 一个线程是进程的...
  • 一、进程和线程的区别(1)进程:资源分配的最小单位;...(3)一个进程崩溃后,在保护模式下不会对其它进程产生影响;一个线程死掉就等于整个进程死掉。(4)进程之间的通信只能通过进程通信的方...
  • 一个进程的独立运行片段,一个进程可以由多个线程 轻量化的进程 一个进程的多个现成间共享数据和上下文运行环境 共享互斥问题 全局解释器锁(GIL) Python代码的执行是由Python虚拟机进行控制 在主循环中只能有一...
  • 一个进程可以包含多个线程,一个线程只能属于一个进程一个进程内的多个线程共享操作系统为进程分配的资源,线程也可以理解为更轻量级的线程。 java中线程的创建 java中有两种方式创建线程,继承Thread类和实现...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 818
精华内容 327
关键字:

一个进程只能包含一个线程