多线程、IPC与定时器在程序中的应用
1. 多线程的应用场景
多线程在程序设计中有着广泛的应用,主要体现在两个方面,一是使进程在进行IO活动时仍能保持响应,二是最大程度地利用处理器的计算资源。
1.1 保持进程响应
在单线程程序中,若线程执行如读取大文件或等待其他进程消息等IO活动时,进程会被调度器阻塞,导致应用程序“冻结”,无法响应用户命令。例如在分布式应用中,这种情况很常见。而多线程可以解决这个问题,将可能阻塞的任务放在不同的工作线程中并发执行,应用程序就能继续响应用户输入。
以一个快节奏的网络游戏为例,它有事件驱动的图形用户界面,需要定期通过网络收发消息,还需从本地硬盘等二级存储设备访问图像和视频文件。这类应用的一个主要非功能需求是对用户命令的高响应性和相应的显示更新,这也是决定游戏可用性和用户满意度的关键因素。若访问硬盘检索文件或等待网络消息,会干扰用户界面所需的流畅快速响应。此时采用多线程方法就很有优势,用户界面服务可以与其他IO活动异步操作。
不过,对于简单游戏,在运行时不需要访问本地二级存储设备。虽然也可以用多线程将网络IO和用户界面放在不同线程中处理,但由于它不是快节奏游戏,用户事件间隔为几秒而非每秒多次,所以采用单线程非阻塞套接字的简单方法就能达到适当的响应级别,避免了多线程设计的复杂性。
1.2 利用计算资源
在并行应用中,会创建多个工作线程,每个线程执行相同的计算,但处理不同的数据子集。若应用程序在多核平台上运行(假设采用内核级线程模型),进程可根据操作系统的调度策略使用与线程数量相同的核心。即使在单核平台上,多线程也能提升这类应用的性能,因为当某个线程进行IO操作被阻塞
超级会员免费看
订阅专栏 解锁全文
591

被折叠的 条评论
为什么被折叠?



