【发布时间】:2010-10-20 20:16:15
【问题描述】:
当我编写消息驱动的应用程序时。很像一个标准的 Windows 应用程序,只是它广泛使用消息传递进行内部操作,关于线程的最佳方法是什么?
在我看来,基本上有三种方法(如果您有任何其他设置,请分享):
- 让一个线程处理所有消息。
- 为不同的消息类型(常规、UI、网络等)拥有不同的线程
- 拥有多个共享和处理单个消息队列的线程。
那么,这三者之间会存在显着的性能差异吗? 以下是一些一般性的想法: 显然,最后两个选项受益于有多个处理器的情况。另外,如果任何线程正在等待外部事件,其他线程仍然可以处理不相关的消息。但是忽略这一点,似乎多个线程只会增加开销(线程切换,更不用说更复杂的同步情况)。
还有一个问题:您会建议在标准的 Windows 消息系统上实现这样的系统,还是实现单独的队列机制,为什么?
【问题讨论】:
标签: c++ multithreading winapi message-queue