Модули данных, как и каналы, используют для организации взаимодействия процессов по данным.
Главное отличие состоит в том, что модули данных поддерживают произвольный доступ к данным, а не последовательный. Модули данных создаются динамически и прикрепляются одновременно несколькими процессам. Ограничением этого механизма является отсутствие синхронизированных процессов, если не считать возможности управления режимами доступа (общие, групповые, пользовательские).
Отсутствие специальных средств синхронизации при использовании модулей заставит помнить о том, что если доступ к нему происходит не в состоянии системы или работа коллектива процесса с полями в этом модуле тщательно не продумана, необходимо использовать для обеспечения корректности обработанных данных некоторый механизм синхронизации (например, события).
Для создания модуля данных используется системная функция mk_data_module(name, size, atr, perm), (atr - атрибут, perm – признак доступа).
Данные модуля обнуляются, и функция возвращает адрес заголовка модуля или (-1) в случае ошибки.
Для прикрепления модуля к процессу используется системная функция mod_link(modname, type_lang), она делает доступным для использования процессом модуля с именем modname и типом/языком type_lang и инкрементирует счетчик прикрепления модуля, возвращает указатель на заголовок модуля или (-1) в случае ошибки.
get_module_dir( ) – копирует в буфер содержимое системного каталога модулей.
crc( ) – генерирует код crc для содержимого заданного в области памяти.
make_module( ) – создает модуль данных в памяти указанного цвета.
munlink( ) – открепляет модуль от процесса.