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

在线程池中同步多个线程

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.40/5 (5投票s)

2006年1月17日

CPOL
viewsIcon

32911

downloadIcon

1532

一篇关于线程同步和 ThreadPool 用法的文章

Sample Image - PoolSynchronization.jpg

引言

这段代码演示了一种通过 ManualResetEvents 同步多个用户工作线程的方法。 我遇到过这样的问题:你可能有很多计算线程,并且每个线程都有多个计算阶段。 约束条件是,除非所有线程完成阶段 'n',否则任何线程都不能进入下一个阶段 'n+1'。

背景

当线程不是高度 CPU 密集型且没有优先级时,ThreadPool 很有用。 通过使用线程池,你可以节省实际线程创建的宝贵资源。

Using the Code

该项目包含三个主要对象

  • GUI frmSwitchBoard
  • 同步对象 CPoolSynchronizer
  • 包含计算函数 'func' 的对象 CComputeItem

你可以从 GUI 控制希望放入 ThreadPool 的计算线程数量。

你可能还会发现如何异步与 WinForm 控件交互很有用。 CComputeItems 通过调用控件上的 Invoke() 独立地更新进度。

历史

  • 2006年1月17日 - 提交初始版本
© . All rights reserved.