何时使用多任务

【勇芳软件工作室】汉化HomePreviousNext

实现多任务有两种方式:作为具有多个线程或多个进程的单个进程,每个进程都有一个或多个线程。应用程序可以将需要私有地址空间和私有资源的每个线程放入其自己的进程中,以防止其他进程线程的活动。

多线程进程可以通过线程来管理互斥任务,例如提供用户界面和执行背景计算。创建多线程进程也可以是一种方便的方式来构建同时执行几个相似或相同任务的程序。例如,命名管道服务器可以为连接到管道的每个客户端进程创建一个线程。该线程管理服务器和客户端之间的通信。您的进程可以使用多个线程来完成以下任务:

*管理多个窗口的输入。

*管理来自多个通讯设备的输入。

*区分不同优先级的任务。例如,高优先级线程可以管理时间关键任务,而低优先级线程则执行其他任务。

*允许用户界面保持响应,同时分配时间到后台任务。

通过创建单个多线程进程而不是创建多个进程,应用程序实现多任务处理通常更有效,原因如下:

*系统可以比进程更快地为线程执行上下文切换,因为进程比线程有更多的开销(进程上下文大于线程上下文)。

*进程的所有线程共享相同的地址空间,并且可以访问进程的全局变量,这可以简化线程之间的通信。

*进程的所有线程都可以共享资源的打开句柄,例如文件和管道。

Win32 API还提供了可用于多线程的替代方法。这些方法中最重要的是异步输入和输出(I / O)以及等待多个事件的能力。

单线程可以启动可以使用异步I / O并发运行的多个耗时的I / O请求。可以对文件,管道和串行通信设备执行异步I / O。有关详细信息,请参阅同步和重叠输入和输出.

单个线程可以在等待发生任何一个或所有几个事件时阻止自己的执行。这比使用多个线程,每个等待单个事件更有效率,并且比通过持续检查事件发生时消耗处理器时间的单个线程更有效。有关详细信息,请参阅等待功能.