Собственно сабж в целях коммуникации. Всё усугубляется необходимостью:
a) не блокироваться на неопределённое время;
б) иметь разумное время реакции на сообщения поступающие по коммуникационному интерфейсу (socket или terminal), вообще подразумевается, что это возможно...;
в) работа совместно с циклом обработки событий Windows, GTK, Tk, что угодно ещё...
Подразумевается, что внешнее по отношению к моему поделию ПО оное поделие использует. Цикл обработки событий реализован в этом самом ПО. Вопрос: каким образом можно обеспечить пункт Б.
По идейным, религиозным и прочим другим убеждениям я выступаю против мультипоточности. И асинхронных сигналов в ОС виндовс не предусмотрено.
Варианты:
1. библиотека отдаёт file handle(s) и указатели функций обработчиков для обработки событий внешней программой.
2. ? (периодически опрос -- явно плохой вариант).
3. вынести всё в отдельный процесс, связать с собственно библиотечной частью через pipe, например, где ни блокировка не возникает, ни наоборот, время реакции не имеет значения.
Может быть существуют типовые решения?