У меня есть четыре потока в C ++ / CLI GUI, который я разрабатываю:
- Собирает необработанные данные
- Сам графический интерфейс
- Поток фоновой обработки, который берет куски необработанных данных и выдает полезную информацию
- Действует как контроллер, соединяющий три других потока
Я получил сборщик необработанных данных и отправил результаты на контроллер, но следующий шаг - сохранить все эти результаты, чтобы к ним имели доступ графический интерфейс и фоновый процессор.
Новые необработанные данные подаются по одному результату за раз с регулярными (частыми) интервалами. GUI будет получать доступ к каждому новому элементу по мере его поступления (контроллер объявляет новые данные, а затем GUI обращается к общему буферу). Обработчик данных будет периодически считывать часть буфера (например, ценность в секундах) и выдавать новый результат. Таким образом, есть один производитель и два потребителя, которым нужен доступ.
Я охотился, но ни один из материалов, поставляемых CLI, не звучит так уж полезно, поэтому я подумываю о том, чтобы прокатиться самостоятельно. Общий кольцевой буфер, который позволяет блокировать запись для коллектора и блокировку чтения для графического интерфейса и процессора данных. Это позволит нескольким потокам читать данные до тех пор, пока эти разделы буфера не будут записаны.
Итак, мой вопрос: есть ли в библиотеках .net какие-то простые решения, которые могли бы достичь этого? Я сумасшедший из-за того, что решил прокатиться сам? Есть ли лучший способ сделать это?