首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工作线程与UI线程之间的有效通信

工作线程与UI线程之间的有效通信
EN

Stack Overflow用户
提问于 2011-12-02 01:17:28
回答 1查看 239关注 0票数 0

我是设计实时窗口应用程序显示图形或图像从多个传感器。我为每个传感器分配了一个线程来获取数据,为每个显示器分配了一个UI线程。根据MSDN,我可以使用PostThreadMessage向另一个线程发送消息。

这听起来不错,但在我的架构中,工作线程需要发送很多信息,比如图像。因此,我不认为我可以用PostThreadMessage向UI线程发送单个大图像数据,因为工作线程必须保存该数据,直到相应的UI线程处理它。

如果是,那么将大量数据从工作线程发送到UI线程的最佳方法是什么?

  1. 我想把它保存为一个文件,但我确信它会成为一个很大的瓶颈,因为它需要非常快地处理数据。
  2. 的一个想法是,当您从工作线程发送消息时,发送非常小的部分,例如,很少行的图像。

如有任何建议,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-02 07:20:47

作为回答,我的评论是:正如jeffamaphone所写的,使用指向内存的指针而不是复制所有内容。这就是线程的优势--共享内存--不要浪费它。将图像内存的释放留给ui线程,并为工作线程中的下一个映像分配新内存。因此,工作线程不必等待ui线程使用图像完成。需要更多内存,但不需要复制或长时间等待。

有一些可能的改进,可以减少您必须进行的分配数量,但它们是相当复杂的--而且它们确实会提高性能,因为它们将重新引入某种同步。因此,我将按照我的建议来实现它,如果您注意到内存分配的数量是性能瓶颈,那么您/我们可以重新考虑这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8350626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档