一、进程和线程的关系
进程:
1.进程是一个局域独立功能的程序,是系统分配资源的基本单位。
2.进程是指在系统中运行的一个应用程序。
3.每个进程之间是相互独立的,并且运行在独立的内存空间,拥有独立的运行时所需全部资源。
线程:
1.线程是程序执行的最小单元,线程是进程中的一个实体
2.一个进程要执行任务最少要一个线程,应用程序启动时,系统会默认开启一个线程,也就是主线程。
进程和线程区别
1.线程是进程的执行单元,进程所有任务都在线程中执行。
2.线程是CPU分配资源的最小单元。
3.一个程序可以多个进程,一个进程可以多个线程,但一个进程最少一个线程。
4.同一个进程内的线程共享进程资源
二、多线程
1.同一时间,单核CPU只能执行一个线程,多线程执行其实是CPU快速的在多个线程之间来回切换。
CPU 调度线程的时间快,造成多线程同时执行的假象。
2.假如多线程非常多,CPU在多个线程之间来回调度,会消耗大量的CPU资源,那么执行线程的效率会降低。
3.多线程优点: 能适当的提高程序的执行效率;
能适当的提高资源利用率。
4.多线程缺点: 开启线程会暂用一定空间,如果大量开启线程,会暂用大量的内存空间,降低程序性能;
线程越多,CPU调度线程开销越大。
三、任务和队列的 区别
任务
任务就是执行操作,也就是执行某一段代码。执行任务有同步执行和异步执行2种。
1.同步:同步添加任务到指定的队列当中,在添加的任务结束前,会一直等待,直到任务队列里的任务结束;即会阻塞线程。
只能在当前线程中执行任务,不具备开启新线程的能力。
2.异步:线程会立即返回,无需等待就会执行下面的任务,不阻塞当前线程。
具备开启新线程能力,如果不添加到主线程,异步会在子线程中执行。
队列
队列:指的是任务的等待队列,即用来存放任务的队列。队列采用的是先进先出的原则。
队列有两种,串行队列和并发队列
串行队列:同一时间内队列中只能执行一个任务,只有当前任务执行完成之后才能执行下一个任务。
并发队列:同时允许多个任务并发执行;并发队列只有在异步函数下才有效。