我做的毕设是一个数据采集系统,我想用多线程,he mfc 有些基本问题解决不了,
三个线程一个采集,一个处理,一个把处理后的数据显示出来(初步想法,最后可能只需要两个),最后一个用主线程。(1) 我的想法是:CMyView有两个共享数据,两个子线程,两个同步对象,共六个成员变量(基本)。系统不使用D-V模式。计划是直接由view获得传来的数据并显示,
(2) 系统产生两个worker线程,同时使用两个mutex对3个线程进行同步。当主线程获得需要的数据后,发送WM_PAINT消息绘图(?使用UpdateWindow方法和RedrawWindow方法,但是问题在于在什么地方使用。或者说,主线程在激活后回到什么位置,也就是说我该在什么地方wait)。

解决方案 »

  1.   

    不需要主线程做什么WAIT动作啊,把主窗口的句柄扔给处理线程,处理完了之后让它直接发消息不行吗?
    如果不行的话,设置一个start动作,例如加个什么菜单按钮之类的
      

  2.   

    发什么消息呀?
    WM_PAINT?
      

  3.   

    这样可能不行,发消息是使用Post还是Send,如果用Post,那么在主线程处理消息前,worker可能会再次使用共享区。如果用 Send那还用多线程干什么。再说如果消息真的有用,要mutex干什么。
      

  4.   

    worker线程把数据放到一个队列中,post一条自定义消息通知主线程取数据。
    这样,没有处理的数据将放在队列中,不会出现前台没有处理,又被后台覆盖的问题。mutex主要用来同步对队列的访问。
      

  5.   

    在你使用两个共享数据时用waitforsingleobject()