进程、线程与协程区别
1、进程是资源分配的基本单位,运行一个可执行程序会创建一个或多个进程,进程就是运行起来的可执行程序
2、线程是资源调度的基本单位,也是程序执行的基本单位,是轻量级的进程。每个进程中都有唯一的主线程,且只能有一个,主线程和进程是相互依存的关系,主线程结束进程也会结束。
3、线程共享 堆、全局变量、静态变量、指针,引用、文件等,而独自占有栈
一个进程可以创建多少线程,和什么有关?
- 如果是32 位系统,用户态的虚拟空间只有 3G(3072M),如果创建线程时分配的栈空间是 10M,那么一个进程最多只能创建 300 个左右的线程。
- 如果是64 位系统,用户态的虚拟空间大到有 128T,理论上不会受虚拟内存大小的限制,而会受系统的参数或性能限制。
过多的线程将会导致大量的时间浪费在线程切换上,给程序运行效率带来负面影响,无用线程要及时销毁
外中断和异常有什么区别?
外中断是指由 CPU 执行指令以外的事件引起,如 I/O 完成中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。
异常时由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等