我正在开发的C ++ / CLI GUI中有四个线程:
我已经将原始数据收集器工作并将结果发布到控制器,但下一步是存储所有这些结果,以便GUI和后台处理器可以访问它们。
新的原始数据以常规(频繁)间隔一次输入一个结果。 GUI将在到达时访问每个新项目(控制器宣布新数据,然后GUI访问共享缓冲区)。数据处理器将定期读取缓冲区块(例如,值为秒)并生成新结果。如此有效,有一个生产者和两个消费者需要访问。
我一直在寻找,但是CLI提供的东西都没有听起来那么有用,所以我正在考虑自己动手。一个共享的循环缓冲区,它允许收集器的写锁和gui和数据处理器的读锁。只要没有写入缓冲区的那些部分,这将允许多个线程读取数据。
所以我的问题是:.net库中是否有任何可以实现此目的的简单解决方案?我是不是因为考虑自己动手而疯了?有没有更好的方法呢?
答案 0 :(得分:1)
是否可以重新解释问题,以便:
如果线程之间传递的值在共享后未被修改,这可能会使您无需使用自定义线程安全集合类,并减少所需的锁定量。