2016-12-01 11 views
2

私は実際に拡張子(PHP 5.6)(この拡張モジュールはLinuxサーバーでのみ使用されます)を開発しました。この拡張モジュールではC pthreadを使用したいと思います。pthread on PHP拡張

PHPZTSオプションでコンパイルすることなく、pthreadを使用する拡張子を作成することはできますか?

phppthreadを使用することができるようにする拡張機能があるが、この拡張機能はztsオプション付きphpのコンパイルを必要とするため。

pthreads requires

答えて

0

有効 ZTSモードなしPHP拡張にスレッドを使用することが可能であるが、スレッドがは(PHPコード自体を含む)を内部機能のいずれかと相互作用してはなりません。これは、ZTSモードが有効になっていなければ、スレッドセーフではありません(明らかに)、Zend Engine(ZE)にはかなりのグローバルステートがあるからです。この場合、スレッドでできることについてはかなり制限されています。

ZTSモードを有効にすると、スレッドは内部関数とPHPコードと対話できますが、共有されていないアーキテクチャでなければなりません。これは、スレッドセーフではないZEのいくつかの部分、特にZend Memory Manager(ZMM)が存在するためです。これは、スレッドごとにPHPのインタープリタを別個に作成しなければならないことを意味します(これは独自のZMMをパックします)。すべての関数、クラス、インタフェース、特性などがこの新しいインタプリタインスタンスにコピーされ、完全に別個の文脈。