处理任务.CPU资源
一、 串行,并行,并发
1、处理任务
- 串行:一个时间段内,执行一个任务的同时不能执行其他任务,只能等到第一个任务完成后才能进行第二个。单核单线程
- 并行:一个时间段内,执行个任务,可以同时运行两个或多个任务,线程互不抢占CPU资源,可以同时进行,这就被称之为并行。 多核多进程
- 并发:一个时间段中有几个任务都处于已启动运行到运行完毕之间,任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行多核多进程多线程,
2、依赖
并发(Concurrent)
并发可以在一个CPU处理器和多个CPU处理器系统中都存在。(多个CPU处理器系统其中的一个CPU也可以进行并发操作)
并行(parallel)
并行在多个CPU处理器系统存在。
3、CPU资源
并发(Concurrent)
并发过程中,线程之间会去抢占CPU资源,轮流使用。(其实CPU会多个各个线程公平的分配时间片和进行执行。)
并行(parallel)
并行过程中,线程间不会抢占CPU资源。(因为是多个CPU处理器,各做各的。)
二、异步同步
同步和异步关注的是消息通信机制(synchronous communication/ asynchronous communication)
1、同步
同步就是协同步调,按预定的先后次序进行运行,发出一个功能调用时,在没有得到结果之前,该调用就不返回,不会出现上面代码没有执行完就执行下面的代码.
缺点:是解析的速度没有异步的快
2、异步
异步是接取一个任务,直接给后台,再接下一个任务,执行结果如何,当前线程不管,接着往下顺序执行代码。
缺点:没有顺序 ,谁先读取完先执行谁的 ,会出现上面的代码还执行下面的就已经出来了,会报错
异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
三、阻塞和非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态,区别在于 会不会阻塞当前程序运行
1、 阻塞
调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。
2、 非阻塞
指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
* 在进程通信层面, 阻塞/非阻塞, 同步/异步基本是同义词,阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。
四、 进程和线程
一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。线程是进程的一个实体,是CPU调度和分派的基本单位
1、进程
是指系统进行资源分配和调度的一个独立单位.在执行过程中拥有独立的内存单元, 同一进程的所有线程共享该进程的所有资源
2、线程
是指进程的一个实体,是CPU调度和分派的基本单位,即真正在cpu上运行的是线程,它是比进程更小的能独立运行的基本单位.线线程不能够独立执行,必须依存在进程中, 共享内存
一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
*线程是最小的执行单元,进程是最小的资源管理单元, 线程执行开销小,但不利于 资源的管理和保护;而进程正相反。