【发布时间】:2009-12-15 12:28:29
【问题描述】:
我正在开发的 C++/CLI GUI 中有四个线程:
- 收集原始数据
- GUI 本身
- 一个后台处理线程,它获取大量原始数据并产生有用的信息
- 充当连接其他三个线程的控制器
我已经让原始数据收集器工作并将结果发布到控制器,但下一步是存储所有这些结果,以便 GUI 和后台处理器可以访问它们。
新的原始数据以固定(频繁)的时间间隔一次输入一个结果。 GUI 将在每个新项目到达时访问它(控制器宣布新数据,然后 GUI 访问共享缓冲区)。数据处理器将定期读取缓冲区的一块(例如一秒钟)并产生新的结果。如此有效,有一个生产者和两个消费者需要访问。
我四处寻找,但 CLI 提供的东西听起来都不是很有用,所以我正在考虑自己动手做。一个共享的循环缓冲区,它允许收集器的写锁和 gui 和数据处理器的读锁。只要缓冲区的这些部分没有被写入,这将允许多个线程读取数据。
所以我的问题是:.net 库中是否有任何简单的解决方案可以实现这一目标?我是否因为考虑自己滚动而生气?有更好的方法吗?
【问题讨论】:
标签: multithreading synchronization c++-cli buffer