【问题标题】:What is the difference between PostMessage and AfxBeginThread?PostMessage 和 AfxBeginThread 有什么区别?
【发布时间】:2009-09-16 06:10:59
【问题描述】:

我可以通过 PostMessage 和 AfxBeginThread 实现相同的功能(异步调用) 那么 PostMessage 和 AfxBeginThread 的区别在哪里呢?

【问题讨论】:

    标签: c++ multithreading mfc visual-c++


    【解决方案1】:

    AfxBeginThread 在您的函数中启动一个全新的线程。

    PostMessage 正在使用进程的主消息循环,因此如果使用 PostMessage 进行长时间操作,则会冻结消息循环,导致 GUI 无响应,直到您完成操作。

    【讨论】:

      【解决方案2】:

      发布消息是 Windows 编程中一种被严重低估的线程同步方法。我几乎只使用它而不是其他线程通信机制。但我认为这不是你要问的。

      我会问你的处理是否足够长以保证它自己的线程。如果答案是否定的,那么请保持简单,并在同一个线程中执行。

      【讨论】:

      • 在足以控制操作顺序的情况下,发布消息效果很好;具体来说,当当前操作完成后可以开始另一操作时。
      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      相关资源
      最近更新 更多