channel.f
Широковещательные каналы
Каналы предназначены для обмена информацией между программами. Обмен в
основном идет в одну сторону - одна из программ, владеющая каналом,
записывает в него данные, другие программы получают уведомление о новом
сообщении и могут считать его. В принципе, программ, посылающих сообщение,
также может быть несколько. Каналы реализованы как конструкция из
системных объектов Windows NT - нескольких объединенных объектов разделяемой памяти,
события и взаимного исключения. Широковещательные каналы рассылают
сообщения как в рамках одной терминальной сессии Windows XP, так и между
терминальными сессиями.
init-channels ( )
Инициализирует систему каналов. Слово должно вызываться до начала работы.
create-channel ( zname -- ch/0 )
Создает канало обмена с указанным именем, если такого канала до этого не
существовало, и возвращает его дескриптор. Если такой канал уже есть,
просто открывает его.
delete-channel ( ch -- )
Удаляет существующий канал. Если это слово не будет вызвано явно, то
система уничтожит канал после закрытия программы.
write-channel ( a # ch -- )
Записывает информацию в канал. В существующей реализации длина
записываемой строки не должна быть более 100 байтов.
read-channel ( buf ch -- buf # )
Ожидает появления данных в канале, затем копирует их в указанный буфер
buf. Возвращает также длину данных. Поскольку слово при вызове
сразу переходит в цикл ожидания, имеет смысл запускать его в отдельном
потоке.