Далее рассматривается разработка сетевых приложений с использованием упрощенного API-интерфейса потоков языка Perl. Как и автоматизация процессов аутсорсинга данная технология во многом облегчает восприятие системы для пользователя. Потоки предоставляют возможность использовать намного более простую структуру программы по сравнению с мультипроцессной обработкой.
Основные сведения о потоках.
Многопоточная обработка в значительной степени отличается от мультипроцессной. Вместо использования двух или более процессов, обладающих собственным пространством памяти, обработчиками сигналов и глобальными переменными, многопоточные программы выполняются в виде единственного процесса, в котором работает несколько так называемых: “потоков выполнения”. Каждый поток работает независимо от другого; он может выполнять цикл или операции ввода-вывода без учета того, что есть и другие работающие потоки. Однако все потоки совместно используют B/IQ бальные переменные, дескрипторы файлов, обработчики сигналов и другие ресурсы.
Совместное использование ресурсов обеспечивает более тесное взаимодействие потоков по сравнению с отдельными процессами, создаваемыми с помощью функции fork (), и в то же время приводит к конкуренции за ресурсы. Например, если два потока одновременно пытаются изменить значение какой-либо переменной, результат может оказаться непредсказуемым. По этой причине в многопоточных программах возникает задача блокировки и управления ресурсами. Многопоточное программирование, с одной стороны, в определенной степени упрощает разработку программ, а с другой стороны, усложняет процесс разработки.
Модуль Thread был введен еще в версии Perl 5.005. Для его использования нужна операционная система, которая поддерживает потоки (к таким операционным система относится большинство версий UNIX и Microsoft Windows); а интерпретатор Perl должен быть оттранслирован с разрешенными средствами поддержки многопоточной обработки.