‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

gtk и glib, самоуничтожающийся idle

ну чо, скептики в очередной раз посрамлены ;) вполне работоспособный способ. Сделал так:
1) структурка с флагом "менеджер FIFO включен" и мьютексом.
2) функция "обновить менеджер FIFO"

функция вызывается из потока, принимающего данные - собственно, ПОСЛЕ приёма очередной порции. Она смотрит на флаг "включен?" и если уже нет, то заново его включает. Сам же "менеджер FIFO" совершает ритуальное самоубийство, если очередь данных пуста. И сбрасывает флажок (собсно, поэтому мьютекс и нужен - флаг анализируется одним потоком, а меняет состояние в другом)

Таким образом, если данные есть - он работает, автоматически завершаясь после опустошения очереди. Если же данные приходят, пока он работает, то функционирование ничем не отличается от предыдущей версии. Байты приходят не так чтобы совсем уж часто и на графике загрузки ЦПУ я вообще не вижу пиков - колебания где-то около нуля, что мне и требовалось. Voila! Из всех лишних накладных расходов - тест логической переменной и, время от времени, добавление указателя на функцию в очередь. Ничего страшного.

(и никакой это не "обход системных механизмов", это как раз их бесхитростная эксплуатация).

P.S. нашёл интересную штуковину - GtkDatabox, надо освоить.
Tags: приключения Электроника
Subscribe

  • worklog: плата питания для AM5708 (2)

    Разводка завершена, теперь её надо попробовать как-нибудь ещё улучшить. Этому обычно помогает отложить проект на день, чтобы потом посмотреть на него…

  • Смотрите, что я заметил.

    Смотрел запись программы "Время" от 17 октября 1990. В рубрике о спорте рассказано, в частности, о матче Каспаров-Карпов, на моменте 36:38 в кадре…

  • Очередное подтверждение правоты моего тезиса

    Каждый луноборец оказывается ещё и плоскозёмом: сначала Kevlar 13 просто поверил в невозможность полётов на Луну, а теперь уже отрицает возможность…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments