高效实现线程控制台窗口

时间:2011-01-31 15:18:34

标签: c++ multithreading winapi console thread-safety

我有一个Win32应用程序,它包含两个组件:一个充当app界面的主窗口和一个充当控制台的辅助无模式对话框。应用程序在某些(常规)操作期间生成大量的调试文本。

考虑到我的约束,在每次调试打印调用期间必须更新控制台的编辑控件是相当昂贵的。我的目的是创建一个由工作线程定期转储的关键部分同步消息队列。我很感激有关如何编写这种实现的任何建议。

4 个答案:

答案 0 :(得分:1)

在工作线程中,锁定CS并添加到共享数据结构。在GUI线程中,设置timer并在WM_TIMER消息处理程序中,锁定CS,从共享数据结构中删除,并附加到编辑控件。

答案 1 :(得分:0)

尝试在编辑控制窗口中休眠消息泵,而不是运行新线程。

答案 2 :(得分:0)

请注意与多线程和GUI有关的这个经常出现的问题:

永远不要从另一个线程访问Gui元素,你必须将消息发布到窗口,因此在更改GUI中的内容时代码将在主线程中执行。

答案 3 :(得分:0)

我尝试在主线程中使用计时器,它对我来说效果很好。我要感谢海报!