Glib Threads против GMain Loop Eventing - PullRequest
0 голосов
/ 27 июня 2019

У меня есть простая система, в которой есть структура GList.Есть два потока: скажем, Head (), который вызывает проникновение данных в структуру GList.Другой поток Tail () вызывает выход данных (и их обработку) в конце списка.

Я собирался реализовать это первоначально, используя pthreads, но сама документация по glib предположила, что вместо потоков основной циклс контекстом следует использовать для присоединения источников и диспетчеризации обратных вызовов.

В общем, неясно, какие проблемы пытается решить главный цикл glib, основной контекст и исходная система.Все, что я мог собрать, это то, что он находит приложения для чтения данных сокетов, его параллелизм с poll () и системой обработки событий пользовательского интерфейса.

Какой вариант использования системы GlibMainLoop?С точки зрения моей постановки задачи это применимо?

1 Ответ

3 голосов
/ 28 июня 2019

GLib является частью проекта Gnome.Он был построен в первую очередь с учетом GUI-приложений, хотя он не ограничивается этим использованием.Его модель для программирования GUI является типичной моделью, основанной на событиях, управляемой главным циклом, который получает события и распределяет их соответствующим образом по компонентам.Вы должны интерпретировать документацию в этом свете.

Похоже, ваше , а не приложение с графическим интерфейсом, единственной ассоциацией GLib которого является использование GList.Я нахожу GList немного сомнительным выбором в этом контексте, но не обязательно неправильным.Выбор GList не означает, что вы должны придерживаться разработки программы, управляемой событиями, и если вы этого не сделаете, то вы, вероятно, не будете использовать цикл главных событий GLib.

Тем не менее, дизайн, управляемый событиями, может служитьВы хорошо, и в некоторых отношениях это будет проще, чем многопоточный.Многое зависит от деталей того, что должны делать ваш производитель и потребитель.

...