【发布时间】:2011-12-02 01:17:28
【问题描述】:
我正在设计显示从多个传感器获取的图形或图像的实时 Windows 应用程序。我分配了一个线程来从每个传感器获取数据,并为每个显示器分配一个 UI 线程。根据 MSDN,我可以使用 PostThreadMessage 将消息发送到另一个线程。
听起来不错,但在我的架构中,工作线程需要发送大量信息,例如图像。所以我不认为我可以使用 PostThreadMessage 将单个大图像数据发送到 UI 线程,因为工作线程必须保存该数据,直到相应的 UI 线程处理它。
如果是这样,将大量数据从工作线程发送到 UI 线程的最佳方法是什么?
我曾考虑将其保存为文件,但我确信它可能会成为很大的瓶颈,因为它需要非常快速地处理数据。
当您从工作线程发送消息时,我的一个想法是发送非常小的部分,例如几行图像。
任何建议将不胜感激。
【问题讨论】:
-
您不必发送所有数据。你有它在记忆中。你有一个指向它的指针。只需发送指针,然后同步访问。
-
@jeffamaphone 感谢您的意见。我知道我可以有一个指针并将其与消息一起发送。但是,从那时起,应该同步数据并且处理速度会变慢。我宁愿有异步进程,这样每个线程就不必等待太多。但这是我的想法。如果我错了,请指出。
-
@Paul:将图像内存的释放留给 ui 线程,并为工作线程中的下一个图像分配新内存。所以工作线程不必等到 ui-thread 处理完图像。需要更多内存,但无需复制或长时间等待。
-
@smerlin 感谢您的意见。好主意。
标签: multithreading