一般地,每个程序都会有一个入口,一个出口以及一个顺序执行的序列,执行中的程序称为进程,在进程执行过程中的任何指定时刻,都只有一个单独的执行点。在多线程的情况下,在单个进程内部可以在同一时刻进行多种运算,有多个执行点。
一个单独的线程和进程相似,也有一个入口,一个出口以及一个顺序执行的序列,从概念上说,一个线程是一个进程内部的一个顺序控制流,必须在进程中运行。在一个进程中可以实现多个线程,这些线程同时运行,完成不同的功能。从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个进程当作独立的进程来对待。
线程,进程比较如下。
1.两者的粒度不同,是两个不同层次上的概念,进程是又操作系统来管理的,而线程则在一个程序(进程)内。
2.不同进程的代码,内部数据和状态都是完全独立的,而一个进程内的多线程是共享进程的内存空间和系统资源的,有可能互相影响。
3.线程本身通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程的切换比进程切换的负担要小。
使用多线程具有如下优点。
1.多线程编程简单,效率高(能直接共享数据和资源,多进程不能)
2.适合于开发服务程序(如Web服务,聊天服务等)
3.适合与开发有多种交互接口的程序(如聊天程序的客户端,网络下载工具)
4.适合与有人机交互又有计算量的程序(如字处理程序Word,Excel)。
5.降低编写交互频繁,涉及面多的程序的难度(如监听网络端口)
6.程序的吞吐量会得到改善(同时监听多种设备,如网络端口,串口,并口以及其他外部设备)。
7.有多个处理器的系统,可以并发运行不同的线程(否则,任何时刻只有一个线程在运行).