Я новичок в многопоточности и разработал программу, которая получает данные от двух микроконтроллеров, измеряющих различные температуры (окружающая среда и вода), и выводит данные на экран. Прямо сейчас программа однопоточна, и ее производительность отстой БОЛЬШОЙ.
Я получаю базовые подходы к проектированию с многопоточностью, но недостаточно хорошо, чтобы создать поток для выполнения задачи, но я не получаю, как заставить потоки выполнять отдельную задачу и помещать данные в общий пул данных. Я подумал, что мне нужно создать очередь с одним потребителем и несколькими производителями (хотел бы использовать std :: queue). Я видел некоторый код в документах с многопоточностью gtkmm, которые показывают одну очередь Con / Pro, и они блокировали бы объект очереди, производя данные и сообщая спящему потоку, что он закончен, тогда производитель будет спать. Для того, что мне нужно, мне нужно будет спать поток, возникнут ли конфликты данных, если я не сплю ни с одним из потоков, и будет ли спящий поток вызывать значительную задержку данных (мне нужно, чтобы данные в реальном времени отображались 30 кадров в сек)
Как бы я занялся кодированием такой очереди с использованием библиотеки gtkmm / glibmm.