什么是多线程编程?
线程是CPU利用率的一个小单元。它包含线程ID、程序计数器、寄存器集和堆栈。它与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开的文件和信号。
重量级进程只有一个控制线程。如果一个进程有多个控制线程,它可以同时执行多个任务。许多在现代PC上运行的软件包都是多线程的。在这里,应用程序实现为一个具有多个控制线程的单独进程。
例如——考虑一个字处理器,它包含一个用于显示图形的线程,另一个线程用于响应用户的按键,第三个线程用于执行拼写和语法检查。
参考单线程和多线程进程的图表——
单线程
多线程进程
同样,单个应用程序需要执行多个相同的任务。
例如——Web服务器接受对网页、图像等的客户端请求。Web服务器可能有多个客户端同时访问它。假设,如果Web服务器作为单线程进程运行,它一次只能服务一个客户端。因此,其他客户端可能必须等待其请求得到服务。
作为接受请求的单一进程运行服务器的一种解决方案是,服务器接收一个请求,该请求创建一个单独的进程来服务该请求。进程创建非常耗时且资源密集。
因此,使用包含多个线程的一个进程通常更高效。这称为多线程进程。Web服务器将创建单独的线程来侦听客户端请求,而不是创建另一个进程。
多线程的优点
多线程的优点如下:
响应性
多线程是一个交互式应用程序,即使部分程序被阻塞或正在执行冗长的操作,它也能让程序继续运行,从而提高对用户的响应速度。
资源共享
通常,线程共享其所属进程的内存和资源。它允许应用程序在其相同的地址空间内具有多个不同的活动线程。
经济性
分配内存和资源以创建进程的成本很高,因为线程共享其所属进程的资源。创建和上下文切换线程更经济。
多处理器架构的利用
在多处理器架构中,多线程可以大大提高效率,在多处理器架构中,线程可以在不同的处理器上并行运行。单个线程只能在一个CPU上运行。多线程提高了并发性。
广告