2016-12-01 110 views
2

我開發的實際上是一個PHP的擴展(PHP 5.6)(這個擴展只會在Linux服務器上使用),在這個擴展中我想用C pthreadpthread PHP擴展

是否可以製作PHP擴展名,它使用pthread,而不必編譯PHPZTS選項?

因爲有一個擴展名可以使用pthreadphp,但是這個擴展名需要編譯phpzts選項。 pthreads requires

回答

0

它可以使用線程在PHP擴展未啓用 ZTS模式,但螺紋不能與任何的內部功能(包括PHP代碼本身)相互作用。這是因爲沒有啓用ZTS模式,沒有什麼是線程安全的(顯然),並且Zend Engine(ZE)中有很多全局狀態。所以在這種情況下,你可以用線程做什麼是非常有限的。

如果您確實啓用了ZTS模式,那麼線程可能會與任何內部函數和PHP代碼交互,但無共享架構必須使用。這是因爲ZE的某些部分仍然不是線程安全的 - 最值得注意的是Zend內存管理器(ZMM)。這意味着對於每個線程,都必須創建一個單獨的PHP解釋器副本(包含它自己的ZMM),其中所有的函數,類,接口,特性等都被複制到這個新的解釋器實例中以執行一個完全獨立的環境。