Что такое POE. Пример очень простой POE-программы

POE — portable multitasking and networking framework for any event loop — платформонезависимый фреймворк для создания многозадачных и сетевых событийно-ориентированных приложений на Perl.

 

Ядро и сессии POE

Систему POE часто называют «маленькой операционной системой». Она имеет собственное ядро, процессы, возможности межпроцессного взаимодействия (IPC), драйвера.

Основными модулями POE являются POE::Kernel и POE::Session. Они подгружаются автоматически, при подключении модуля POE.

POE::Kernel — это ядро системы. Ядро контролирует работу процессов, обеспечивает многозадачность системы. POE реализует невытесняющую многозадачность: все сессии выполняются в рамках одного процесса операционной системы, без использования потоков или создания дополнительных процессов. При этом, сессии отрабатываются по очереди. Пока не завершится работа текущей сессии, выполнение другой не начнется. Это важно учитывать, чтобы из-за ошибки в работе сессии не была заблокирована работа всего POE-приложения.

Сессия в POE — это эквивалент процессов в обычной операционной системе. Каждую сессию можно рассматривать как самостоятельное приложение, которое имеет свой набор методов и свою абстрактную память. С помощью ядра сессии могут общаться между собой. Можно создавать «дочерние» сессии.

POE является событийной машиной. Вся работа этой системы направлена на получение информации о произошедших событиях, и обработку этих событий. При создании сессии, указывается список возможных событий и каждому из них назначается собственный обработчик.

Таким образом — ядро POE, сессии (как минимум одна) и список событийных обработчиков — это основа любой POE-системы. Без любого из этих компонентов работа системы становится невозможной.

Пример самой простой POE-программы:

Вывод:

В данном случае, мы просто создаем одну сессию, которая в начале работы должна выводить сообщение о старте, а при завершении работы — запись об остановке. И запускаем ядро, которое запускает сессию на выполнение .

 

Полезные ссылки

www.opennet.ru: Создание многозадачных и сетевых приложений на Perl средствами POE (perl proccess select io)

search.cpan.org: POE.pm