О GLib.Idle на Вала - PullRequest
       18

О GLib.Idle на Вала

0 голосов
/ 16 июня 2019

Valadoc не очень хорошо документирован в некоторых частях, пространство имен Idle в GLib не имеет описания того, что они делают, есть только несколько функций для определения уровня приоритета для события простоя!

Кто-то знает, что это делает?

Functions:

public uint add (owned SourceFunc function, int priority = DEFAULT_IDLE)
public uint add_full (int priority, owned SourceFunc function)
public bool remove_by_data (void* data)

1 Ответ

2 голосов
/ 16 июня 2019

Если есть сомнения, обратитесь к документации C:

https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-idle-add

Добавляет функцию, которая будет вызываться при отсутствии более высокого приоритета. события, ожидающие основного цикла по умолчанию. Функция дается приоритет по умолчанию, G_PRIORITY_DEFAULT_IDLE. Если функция возвращает FALSE автоматически удаляется из списка событий источники и больше не будут называться.

См. Управление памятью источников для получения подробной информации о том, как обращаться с возвращаемое значение и управление памятью данных.

Это внутренне создает источник основного цикла, используя g_idle_source_new () и присоединяет его к глобальному GMainContext, используя g_source_attach (), так обратный вызов будет вызван тем потоком, который работает контекст. Вы можете сделать эти шаги вручную, если вам нужен больший контроль или использовать пользовательский основной контекст.

В общем, вы можете прочитать о главном цикле:

https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#glib-The-Main-Event-Loop.description

Основной цикл событий управляет всеми доступными источниками событий для Приложения GLib и GTK +. Эти события могут происходить из любого числа различные типы источников, такие как файловые дескрипторы (простые файлы, трубы или розетки) и тайм-ауты. Новые типы источников событий также могут быть добавлено с помощью g_source_attach ().

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

Каждому источнику событий назначается приоритет. Приоритет по умолчанию, G_PRIORITY_DEFAULT, равно 0. Значения меньше 0 обозначают более высокие приоритеты. Значения больше 0 обозначают более низкие приоритеты. События с высоты приоритетные источники всегда обрабатываются до событий с более низким приоритетные источники.

Также можно добавлять функции ожидания и назначать им приоритет. Эти воли запускаться всякий раз, когда нет событий с более высоким приоритетом обрабатывается.

[...]

...