什么是进程?
一段程序的执行过程。——百度百科
什么是线程?
操作系统能够进行运算调度的最小单位。——百度百科
进程与线程的关系?
- 进程是资源分配的基本单位。
- 线程是独立调度和分配的基本单位。
- 一个进程可以有多个线程,每个线程并行执行不同的任务。
- 一个程序至少有一个进程,一个进程至少有一个线程。
内存:逻辑内存,内存的寻址空间。每个进程的内存彼此独立。
文件、网络句柄:所有线程共有。
栈:调用栈。从主线程的入口main函数,会不断的进行函数调用,每次调用会把所有的参数和返回地址压入到栈。
PC:Program Counter程序计数器,操作系统真正运行的是一个个线程,进程只是个容器。PC指向当前的指令,这个指令是放在内存中的,每个线程都有一串自己的指针,指向自己当前所在内存的指针。
TLS:thread local storage。线程独立的内存,存储线程独有的数据。
线程之间如何交互?
通过TCP/IP端口实现。
线程之间如何交互?
指针。
多线程原理?
- 单核CPU,同一时间,仅能处理一个线程。
- 多线程同时执行:CPU快速的在多个线程之间切换,CPU调用线程的时间足够快,就造成了多线程的“同时”执行效果。
- 如果线程数非常多时,CPU会在N个线程之间切换,消耗大量的CPU资源,每个线程调度的次数会降低,线程的执行效率降低。
多线程优点?
- 能够适当提高程序的执行效率。
- 能够适当提高资源的利用率。
- 线程上的任务执行完成后,线程会自动销毁。
多线程缺点?
- 开启线程需要占用内存空间,默认情况下,每一个线程占512KB。
- 开启大量的线程,会占用大量的内存空间,降低程序的性能。
- 线程越多,CPU在调用线程上的开销就越大。
- 程序设计更加复杂。