Я разрабатываю на самом деле PHP
расширение (PHP 5.6
) (это расширение будет использоваться только на сервере Linux), в этом расширении я хотел бы использовать C pthread
,
Можно ли сделать PHP
расширение, которое использует pthread
без необходимости компилировать PHP
с ZTS
вариант?
Потому что есть расширение, которое можно использовать потоковой с php
но это расширение требует компиляции php
с zts
вариант.
pthreads требует
Возможно использование многопоточности в расширении PHP без Режим ZTS включен, но темы не должен взаимодействовать с любыми внутренними функциями (включая сам код PHP). Это происходит потому, что без включенного режима ZTS нет ничего поточно-ориентированного (очевидно), и в Zend Engine (ZE) довольно много глобальных состояний. Таким образом, вы весьма ограничены в том, что вы можете сделать с потоками в этом случае.
Если вы включите режим ZTS, то потоки могут взаимодействовать с любыми внутренними функциями и кодом PHP, но с архитектурой без общего доступа. должен быть занятым. Это связано с тем, что некоторые части ZE по-прежнему не являются поточно-ориентированными, особенно Zend Memory Manager (ZMM). Это означает, что для каждого потока должна быть сделана отдельная копия интерпретатора PHP (которая включает в себя собственный ZMM), где все функции, классы, интерфейсы, признаки и т. Д. Копируются в этот новый экземпляр интерпретатора для выполнения действий в совершенно отдельный контекст.
Других решений пока нет …