2016-12-01 82 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),其中所有的函数,类,接口,特性等都被复制到这个新的解释器实例中以执行一个完全独立的环境。