65.9K
CodeProject 正在变化。 阅读更多。
Home

通过线程池改进您的服务器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.43/5 (7投票s)

2004 年 8 月 16 日

1分钟阅读

viewsIcon

30304

downloadIcon

793

本文档解释了如何在应用程序中实现线程池。

引言

“许多应用程序创建线程,这些线程花费大量时间处于睡眠状态,等待事件发生。其他线程可能只在定期唤醒时才进入睡眠状态,以轮询更改或更新状态信息。线程池使您能够通过为应用程序提供由系统管理的 worker 线程池来更有效地使用线程。一个线程监视排队到线程池的多个等待操作的状态。当等待操作完成时,线程池中的一个 worker 线程执行相应的回调函数。” (MSDN 2003)。

要求

  1. 需要 /MT 标志。
  2. MFC。

解释

该项目文档完善,包含一个简单的演示程序。演示程序显示一个包含两个线程和十五个任务的线程池。您可以将其视为一个 socket 服务器中的十五个连接。

在演示中,一个线程被卡住一段时间,而工作没有停止,另一个线程继续执行任务。

调用 initialize 函数以启动线程池。

您必须声明一个回调函数,该函数将处理所有线程的任务。它应该如下所示

bool ThreadCallback(LONG jobId, LPVOID pParam)

jobId 是内部计数,但您需要它来使用以下函数删除任务

RemoveJob( LONG jobID )

祝您好运!

© . All rights reserved.