什么是多线程编程?


线程是CPU利用率的一个小单元。它包含线程ID、程序计数器、寄存器集和堆栈。它与属于同一进程的其他线程共享代码段、数据段和其他操作系统资源,如打开的文件和信号。

重量级进程只有一个控制线程。如果一个进程有多个控制线程,它可以同时执行多个任务。许多在现代PC上运行的软件包都是多线程的。在这里,应用程序实现为一个具有多个控制线程的单独进程。

例如——考虑一个字处理器,它包含一个用于显示图形的线程,另一个线程用于响应用户的按键,第三个线程用于执行拼写和语法检查。

参考单线程和多线程进程的图表——

单线程

多线程进程

同样,单个应用程序需要执行多个相同的任务。

例如——Web服务器接受对网页、图像等的客户端请求。Web服务器可能有多个客户端同时访问它。假设,如果Web服务器作为单线程进程运行,它一次只能服务一个客户端。因此,其他客户端可能必须等待其请求得到服务。

作为接受请求的单一进程运行服务器的一种解决方案是,服务器接收一个请求,该请求创建一个单独的进程来服务该请求。进程创建非常耗时且资源密集。

因此,使用包含多个线程的一个进程通常更高效。这称为多线程进程。Web服务器将创建单独的线程来侦听客户端请求,而不是创建另一个进程。

多线程的优点

多线程的优点如下:

响应性

多线程是一个交互式应用程序,即使部分程序被阻塞或正在执行冗长的操作,它也能让程序继续运行,从而提高对用户的响应速度。

资源共享

通常,线程共享其所属进程的内存和资源。它允许应用程序在其相同的地址空间内具有多个不同的活动线程。

经济性

分配内存和资源以创建进程的成本很高,因为线程共享其所属进程的资源。创建和上下文切换线程更经济。

多处理器架构的利用

在多处理器架构中,多线程可以大大提高效率,在多处理器架构中,线程可以在不同的处理器上并行运行。单个线程只能在一个CPU上运行。多线程提高了并发性。

更新于:2021年11月30日

2K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告