各位大侠请赐教。
     最近编一个多线程下载程序,要求能控制下载的暂停、开始。
    我用MFC做的,开了16个下载子线程,,定义了几个全局的结构体变量,这几个变量在主线程和子线程都有赋值和取值。
现在的问题是,,我写的很多函数都用到了这几个全局变量,主线程和子线程也经常操作这些函数。。不知道应该用什么同步策略来控制他们的同步。。我今天试了很多方法都不奏效。锁少了程序经常乱,,锁多了主窗口都死了。各位有什么好的同步策略???

解决方案 »

  1.   

    全局变量肯定要做同步处理的,锁多了主窗口死了,估计你没在线程里操作了主线程里的控件什么,MFC不是线程安全的,
      

  2.   

    使隶属于同一进程的各线程协调一致地工作称为线程的同步。MFC提供了多种同步对象,下面是最常用的四种: 
    临界区(CCriticalSection) 
    事件(CEvent) 
    互斥量(CMutex) 
    信号量(CSemaphore)
      
    通过这些类,我们可以比较容易地做到线程同步。 
      

  3.   

    解决办法:
      你可以将每一个线程都用一个事件:event
      然后在线程内循环等待事件watiforsingle,在这个循环内实现下载
      在外面可以随时改变这个事件的信息。就OK拉