在win2K以后的操作系统里有几个线程池的api : QueueUserWorkItem, WorkItemFunc, 等(可参阅msdn)。
这里我不是介绍他们的用法。
我现在一个工程当中,需要用到线程池,主要是效率的考虑。
在很早之前我其实已经实现过线程池,只是那时,没有整理,另一方面是,工程一般都很大,不适合为大家作为范例来学习。
我这里实现了一个线程池,主要是我也想把自己的一些思想稳定下来.
原理:
如图
关键技术
多线程,事件/同步,回调机制。
使用细节.
BOOL CThreadDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_threadpool.SetPF(Test);
m_threadpool.Run();
return TRUE; // return TRUE unless you set the focus to a control
}
源码可以在http://www.vczx.com/article/show.php?id=435处得到。
最新的版本更安全,代码更完善。不过,这里我不知道如何上传源程序。
赫赫,有空大家多交流。