да. Но он сам по себе не содержит полного решения IPC и, вероятно, не полностью совместим со всеми имеющимися реализациями IPC. С родителем и детьми, я думаю, вы имеете в виду сервер и клиентов? Обычно вы открываете какое-то сетевое соединение или создаете канал для связи и получаете дескриптор файла (даже если вы используете библиотеку высокого уровня, которая скрывает это). Вы можете передать этот файловый дескриптор в glib и получить обратный вызов, после чего данные будут доступны для чтения (или соединение будет закрыто). Некоторые популярные методы IPC, такие как CORBA и DBUS уже имеет интеграцию с glib, поэтому вам даже не нужно возиться с файловыми дескрипторами и тому подобным. Цикл событий glib описан здесь. Это может показаться чрезвычайно сложным по сравнению с простым использованием poll() напрямую, но, с другой стороны, это очень портативно.
Основное использование состоит в том, чтобы создать источник с помощью g_source_new() и добавить его в ваш основной контекст с помощью g_source_attach(), а затем добавить дескриптор файла к источнику с помощью g_source_add_poll().
Если вы еще не выбрали glib, вы можете проверить libevent, который делает то же самое. вещь как бойкая, но (ИМХО) намного проще в использовании. Он также значительно лучше справляется с 1000+ одновременных клиентов (по крайней мере, в Linux, другие операционные системы могут даже не поддерживать это). Но, с другой стороны, он не такой портативный и, вероятно, будет работать только на достаточно совместимых с posix системах.
person
Grim
schedule
30.06.2010