1,并发性(concurrency)和并行性的区别
并行指在同一时刻,有多条指令在多个处理器上同时执行;
并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,
使得在宏观上具有多个进程同时执行的效果。
2,多线程则扩展了多进程的概念,使得同一个进程可以同时并发处理多个任务。
线程也被称做轻量级进程,线程是进程的执行单位。就像进程在操作系统中的地位一样,线程在程序
中是独立的,并发的执行流。当进程被初始化后,主线程就被创建了。对于绝大多数的应用程序来说,
通常仅要求有一个主线程,但也可以在该进程内创建多条顺序执行流,这些顺序执行流就是线程,每个线程
也是互相独立的。
3,线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。线程可以拥有自己的堆栈,
自己的程序设计器和自己的局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程所拥有的全部资源。
因为多个线程共享父进程里的全部资源,因此编程更加方便;但必须更加小心,因为需要确保线程不会妨碍同一进程里
的其他线程。
4,线程可以完成一定的任务,可以与其他线程共享父进程中的共享变量及部分环境,相互之间协同来完成进程所要完成的
任务。
5,线程是独立运行的,它并不知道进程中是否还有其他线程存在。线程的执行是抢占式的,也就是说,当前运行的线程
在任何时候都可能被挂起,以便另外一个线程可以运行。
6,一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
7,从逻辑角度来看,多线程存在于一个应用程序中,让一个应用程序中可以有多个执行部分同时执行,但操作系统无须将
多个线程看做多个独立的应用,对多线程实现调度和管理以及资源分配。线程的调度和管理有进程本身负责完成。
8,简而言之:一个程序运行后至少有一个进程,一个进程里可以包含多个线程,但至少要包含一个线程。