各位大侠请赐教。
最近编一个多线程下载程序,要求能控制下载的暂停、开始。
我用MFC做的,开了16个下载子线程,,定义了几个全局的结构体变量,这几个变量在主线程和子线程都有赋值和取值。
现在的问题是,,我写的很多函数都用到了这几个全局变量,主线程和子线程也经常操作这些函数。。不知道应该用什么同步策略来控制他们的同步。。我今天试了很多方法都不奏效。锁少了程序经常乱,,锁多了主窗口都死了。各位有什么好的同步策略???
最近编一个多线程下载程序,要求能控制下载的暂停、开始。
我用MFC做的,开了16个下载子线程,,定义了几个全局的结构体变量,这几个变量在主线程和子线程都有赋值和取值。
现在的问题是,,我写的很多函数都用到了这几个全局变量,主线程和子线程也经常操作这些函数。。不知道应该用什么同步策略来控制他们的同步。。我今天试了很多方法都不奏效。锁少了程序经常乱,,锁多了主窗口都死了。各位有什么好的同步策略???
临界区(CCriticalSection)
事件(CEvent)
互斥量(CMutex)
信号量(CSemaphore)
通过这些类,我们可以比较容易地做到线程同步。
你可以将每一个线程都用一个事件:event
然后在线程内循环等待事件watiforsingle,在这个循环内实现下载
在外面可以随时改变这个事件的信息。就OK拉