使用消息机制和使用调用函数方式有何区别?各有什么优缺点?

使用机制和使用调用函数方式有何区别?各有什么优缺点?

    最关键的应用区别是,消息机制可能解决不同线程间的数据转输和控制,而不同的线程间不能直接调用函数。知道这些也应该知道它们之间不存在对比了,这是不同的应用。  

    如果是windows下的操作,特别是UI之间, 线程之间用消息,它是一种缓冲处理(post),本来很多内置的界面API都是在发送消息;
    比如MFC的界面不能再另外一个线程中直接操作,那就用消息直接操作,或者转发后再操作如果是在设计时想把某些任务委托给调用者去处理,就用回调函数,比如STL中的算法库中的foreach,sort等API; 这种是当时必须处理。 也是与WINDOWS 无关的,至于语言相关的,你总不能设计了一个数学算法库,还要用消息吧!

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-03-15
消息机制是排队处理方式,windows存在一个系统队列,每当一个应用程序或一个线程发生一个事件或需要处理事务的时候并不是直接调用应用程序中的函数,而是把需求打包,向windows申请调用。

系统根据调度机制,从队列中取得一个消息包,拆箱,检查内容,根据其来源,将消息包重新打包,发送给该包指定的应用程序队列。应用程序回调函数循环监视应用程序队列,根据消息包参数处理不同事务,执行完后将控制权释放。

这样做的好处是将主动权让给操作系统,由系统调度分配执行时间,实现多任务执行。

只有窗口处理函数利用消息机制,一般情况都使用调用,除非你需要窗口处理指定的任务,那么可以在如何时候发送一个消息给自己窗口。

至于优缺点,消息机制针对操作系统的,一般任务都是直接调用,但是如果遇到占用CPU时间长的事务,就要将事务分割成片段,然后发送消息给系统,请求调用,这样不至于造成CPU假死。本回答被提问者采纳
相似回答