3.4.4 Функции простоя

Функция простоя непрерывно вызывается когда главному циклу Gtk+ больше нечем заняться. Функции простоя выполняются только когда очередь событий пуста, и главный цикл будет работать вхолостую, ожидая когда что-то произойдет. До тех пор, пока они возвращают TRUE, они вызываются снова и снова; когда они вернут FALSE, они удаляются, как будто была вызвана функция "gtk_idle_remove()".

API функций простоя, показанный в списке функци 3..15, идентичен API функций таймаута и выхода. Опять же, "gtk_idle_remove()" не должен вызываться изнутри функции простоя, потому что это может повредить список функций простоя Gtk+. Верните FALSE, если хотите удалить функцию простоя.

Функции простоя наиболее часто используются для постановки в очередь одноразового кода, который выполняется после того, как все события были обработаны. Относительно дорогие операции, такие как согласование размеров в Gtk+ и перерисовки GnomeCanvas происходят в функциях простоя, возвращающих FALSE. Это позволяет быть уверенным в том, что дорогие операции выполняются только один раз, даже если несколько последовательных событий затребовали перевычисления.

Главный цикл Gtk+ содержит простой планировщик; функции простоя на самом деле имеют приоритеты, им присвоенные, также как и процессы в UNIX. Вы можете присвоить приоритет, не равный приоритету по умолчанию вашим функциям простоя, но это сложная тема вне компетенции этой книги.

Список функций 3..15: Функции простоя
"#include "<gtk/gtkmain.h>
guint gtk_idle_add(GtkFunction function, gpointer data) void gtk_idle_remove(guint idle_handler_id) void gtk_idle_remove_by_data


Linux Land
2000-09-15