将信号量作为子线程CThreadChild的静态公有成员变量,有主线程中用CThreadChild::m_event来调用。

解决方案 »

  1.   

    softsprite:
     你好,谢谢你的帮助,但是我还是不很明白。我要做的工作是:在主进程中启动一个子线程,该子线程在后台进行指定文件的下载工作,下载完后便会自动结束。同时,主进程要同步工获知子线程的工作情况,比如,下载工作进行了多少?某某页是否已经下载?整个工作是否已经进行完毕?等等。
     你说的CThreadChild是一个自定义的类吗?是从CWinThread派生出来的吗?
     我看到的MSDN里面,有提到关于线程间同步的,要用到CEvent、CSingleLock等,可我总觉得没有必要这么复杂,你说呢?
     希望得到更具体的解答,先行谢谢啦。
      

  2.   

    wpmsoft:
    我也觉得可以只用CEvent就可以了。
    可否告知进行下载工作的函数?
      

  3.   

    用mutex!
    int state:
    HANDLE h_Mutex;int GetState(){
    int i;
    WaitForSingleObject(h_Mutex);
      i=state;
    ReleaseObject();
    return i;
    }void SetState(int st){WaitForSingleObject(h_Mutex);
      state=st;
    ReleaseObject();
    return i;
    }mainThread(){
    CreateMutex...
    CreateThread...
    while(1){
    ReadState();
     }
    }DWORD WINAPI SubThread(LPVOID ){
    //each time u update ur state use SetState() function
    ..
    ..
    ..}