在线程池中同步多个线程






3.40/5 (5投票s)
一篇关于线程同步和 ThreadPool 用法的文章

引言
这段代码演示了一种通过 ManualResetEvent
s 同步多个用户工作线程的方法。 我遇到过这样的问题:你可能有很多计算线程,并且每个线程都有多个计算阶段。 约束条件是,除非所有线程完成阶段 'n',否则任何线程都不能进入下一个阶段 'n+1'。
背景
当线程不是高度 CPU 密集型且没有优先级时,ThreadPool
很有用。 通过使用线程池,你可以节省实际线程创建的宝贵资源。
Using the Code
该项目包含三个主要对象
- GUI
frmSwitchBoard
- 同步对象
CPoolSynchronizer
- 包含计算函数 '
func
' 的对象CComputeItem
你可以从 GUI 控制希望放入 ThreadPool
的计算线程数量。
你可能还会发现如何异步与 WinForm 控件交互很有用。 CComputeItem
s 通过调用控件上的 Invoke()
独立地更新进度。
历史
- 2006年1月17日 - 提交初始版本