有3个线程:主线程和两个处理其它事的线程A和B,现在有两个消息处理函数A()和B(),
现在A线程运行到SendMessage函数(消息处理函数为A(),消息处理花费3秒钟),B线程运行到PostMessage函数(消息处理函数为B(),消息处理花费2秒钟),现在线程A先运行,然后马上运行线程B,请问三个线程的运行情况。PostMessage发的消息应该是主线程来处理。我不太清楚SendMessage所发送的消息的时候该是哪个线程来处理消息函数的,是主线程还是线程A呢?谢谢大家。

解决方案 »

  1.   

    无用是postmessage和sendmessage应该都是主线程处理的Windows的线程有ui线程和工作线程,一般工作线程没有自己的消息循环,而ui线程有自己的消息循环你的主线程应该是ui线程,a和b都是工作线程,它们把消息发给主线程,由主线程的消息处理函数处理postmessage和sendmessage的区别是sendmessage是阻塞的,它要等到主线程处理完消息后才返回的而postmessage是非阻塞的,调用之后,立即返回,而没有去关心主线程又没有处理这个消息
      

  2.   

    Post发送后就返回了
    send要等待的
      

  3.   

    PostMessge发送了,就返回了,不管结果
    SendMessage发送还要等待结果的回来再返回
      

  4.   

    sendmessage是阻塞的,它要等到主线程处理完消息后才返回的postmessage是非阻塞的,调用之后,立即返回,而没有去关心主线程又没有处理这个消息
      

  5.   

    这个得看你接收消息的窗口是哪个线程的,如果只有一个UI线程(主线程)没问题,如果还有别的UI线程那就要看接收窗口是哪个线程的。新手~不知道我这样想对不对呢?~