![](/img/trans.png)
[英]pthread_create in PHP extension (in C++) function never returns
[英]pthread on PHP extension
我實際上開發了一個PHP
擴展( PHP 5.6
)(此擴展將僅在Linux服務器上使用),在此擴展中,我想使用C pthread
。
是否可以制作一個使用pthread
的PHP
擴展,而不必使用ZTS
選項編譯PHP
?
因為有一個擴展名,可以將pthread與php
一起使用,但是此擴展名要求使用zts
選項編譯php
。 pthreads要求
在未啟用ZTS模式的情況下,可以在PHP擴展中使用線程,但是線程不得與任何內部函數(包括PHP代碼本身)進行交互。 這是因為(未啟用)沒有啟用ZTS模式,沒有什么是線程安全的,並且Zend Engine(ZE)中有很多全局狀態。 因此,在這種情況下,您對線程的處理能力非常有限。
如果確實啟用ZTS模式,則線程可以與任何內部函數和PHP代碼進行交互,但是必須采用無共享架構。 這是因為ZE的某些部分仍然不是線程安全的-最值得注意的是Zend Memory Manager(ZMM)。 這意味着必須為每個線程制作一個單獨的PHP解釋器副本(將其包裝成自己的ZMM),並將所有函數,類,接口,特征等復制到此新的解釋器實例中以執行其中的操作。完全獨立的上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.