Visual Studio .NET 2002Visual C++ 7.1Visual Studio 6Visual C++ 7.0Visual Studio .NET 2003Windows 2003Windows 2000Windows XPMFC中级开发Visual StudioWindowsC++
通过线程池改进您的服务器






2.43/5 (7投票s)
2004 年 8 月 16 日
1分钟阅读

30304

793
本文档解释了如何在应用程序中实现线程池。
引言
“许多应用程序创建线程,这些线程花费大量时间处于睡眠状态,等待事件发生。其他线程可能只在定期唤醒时才进入睡眠状态,以轮询更改或更新状态信息。线程池使您能够通过为应用程序提供由系统管理的 worker 线程池来更有效地使用线程。一个线程监视排队到线程池的多个等待操作的状态。当等待操作完成时,线程池中的一个 worker 线程执行相应的回调函数。” (MSDN 2003)。
要求
- 需要 /MT 标志。
- MFC。
解释
该项目文档完善,包含一个简单的演示程序。演示程序显示一个包含两个线程和十五个任务的线程池。您可以将其视为一个 socket 服务器中的十五个连接。
在演示中,一个线程被卡住一段时间,而工作没有停止,另一个线程继续执行任务。
调用 initialize
函数以启动线程池。
您必须声明一个回调函数,该函数将处理所有线程的任务。它应该如下所示
bool ThreadCallback(LONG jobId, LPVOID pParam)
jobId
是内部计数,但您需要它来使用以下函数删除任务
RemoveJob( LONG jobID )
祝您好运!