Введение
  
   pthreads предоставляет объектно-ориентированный API для работы с многопоточностью в PHP.
   Приложения на PHP могут создавать, читать, записывать, запускать и выполнять синхронизацию с объектами Threads, Workers и Threaded.
  
  Внимание
   
    Модуль считается неподдерживаемым и мёртвым.
   
   
  Подсказка
   
    Попробуйте вместо этого использовать parallel.
     
   
  Внимание
   
    Модуль доступен только для CLI-приложений.
    Исходя из этого, многопоточность в PHP в окружении веб-сервера недоступна.
   
   
  Внимание
   
    pthreads (v3) может использоваться только с PHP 7.2 и выше, так как ZTS-режим нестабилен в 7.0 и 7.1.
   
   
  
   Класс Threaded предоставляет базовый
   функционал, необходимый для работы pthreads. Он предоставляет
   методы синхронизации и некоторые полезные для разработчика
   интерфейсы.
  
  
   Класс Thread позволяет создавать потоки.
   Для создания потока необходимо создать наследующие его класс и
   в нём реализовать метод run.
   Любые свойства могут быть записаны и прочитаны из любого контекста
   через ссылку на поток. Также из любого контекста
   могут быть вызваны публичные и защищённые методы. Метод run будет
   запущен в отдельном потоке, как только будет вызван
   метод Thread::start() из контекста, в котором он
   был создан. Стартовать и присоединить поток можно только в том контексте,
   где он был создан.
  
  
   Класс Worker имеет постоянное состояние и
   будет доступен из метода Thread::start()
   (унаследованный метод) до тех пор, пока объект не выйдет из
   области видимости, либо пока не будет принудительно остановлен
   (с помощью Worker::shutdown()).
   Любой контекст имеющий ссылку к данному объекту может добавлять
   задания на стек Worker (с помощью
   Worker::stack()), которые будут запущены
   в отдельном потоке. Метод run объекта Worker
   будет запущен раньше, чем любой объект с его стека задач, что
   даёт возможность инициализировать необходимые для задачи
   ресурсы.
  
  
   Класс Pool используется для создания группы
   исполнителей (worker) для распределения между ними объектов
   Threaded. Это самый простой и эффективный
   вариант использования многопоточности в PHP.
  
  Предостережение
   
    Класс Pool не наследует
    Threaded, таким образом являясь обычным
    объектом PHP. Объекты этого класса не должны разделяться по различным
    контекстам.
   
   
  
   Класс Volatile добавлен в pthreads v3. Он
   используется для задания изменяемых
   Threaded-свойств классов типа
   Threaded (так как теперь они по умолчанию
   неизменяемы). Также используется для хранения массивов PHP
   в контексте Threaded.
  
  
   Синхронизация - важная часть многопоточности. Все объекты,
   созданные pthreads, имеют встроенные методы для обеспечения
   синхронизации (они покажутся очень знакомыми для разработчиков
   на Java): Threaded::wait() и
   Threaded::notify(). Вызов
   Threaded::wait() переведёт объект в
   ожидание до того момента, пока из другого контекста не будет вызван
   Threaded::notify() для ожидающего объекта.
   Этот механизм позволяет осуществлять синхронизацию между
   объектами Threaded.
  
  Предостережение
   
    Любые объекты вашего приложения, которые предполагается использовать
    в многопоточном режиме, должны наследовать
    Threaded.
   
   
  
   Хранение данных:
   Как правило, в объекте Threaded можно использовать любые данные,
   которые могут быть сериализованы. Они могут быть записаны и прочтены из
   любого контекста через ссылку на этот объект.
   Не каждый тип данных хранится в сериализованном виде. Базовые типы
   хранятся в их истинной форме. Сложные типы, массивы и объекты , не
   являющиеся Threaded, хранятся сериализованными; они могут быть
   прочитаны или записаны в Threaded-объект из любого контекста  по
   ссылке.
   За исключением Threaded-объектов, все ссылки, использующиеся
   для установки свойства в Threaded-объекте отделены от ссылок внутри
   Threaded-объекте. Чтение тех же данных можно производить напрямую
   из любого контекста по ссылке на Threaded-объекте.
  
  
   Статические свойства:
   Когда создаётся новый контекст (Thread или Worker), они просто копируются,
   но ресурсы и объекты обнуляются (из соображения безопасности). Это
   позволяет использовать их как локальные для потока хранилища. К примеру,
   во время создания контекста, для класса, статические свойства которого хранят
   информацию о соединении к БД и само соединение, будет скопирована только
   информация необходимая для соединения, но не само соединение. Это
   позволит создать новое соединение в новом контексте и сохранить его
   в том же месте никак не затрагивая оригинальный контекст.
  
  Предостережение
   
    Когда запускаются print_r, var_dump или другие отладочные функции,
    они не включают защиту от рекурсии.
   
   
  Замечание: 
   
    Ресурсы:
    Модули и функциональность PHP, создающие ресурсы, совершенно не
    подготовлены для такого типа окружения; pthreads предоставляет
    механизм разделения ресурсов между контекстами, однако
    для большинства типов ресурсов его следует считать небезопасным.
    Разделяя ресурс между контекстами необходимо быть крайне внимательным
    и осторожным.
   
  
  Предостережение
   
    В окружении, где запускается pthreads, необходимы некоторые ограничения
    и запреты для обеспечения стабильности.