興味深いphpマルチスレッド拡張pthreads

995 ワード

最近windwosの小さなプロジェクトがphpマルチスレッドを使っていて、pthreadsしか使えないオプションはありません.面白い穴に出会って、読んだ友达に役立つことを記録します.
1、メインスレッドにのみサブスレッドを作成
私はもともと自分のclassをzephirで拡張にコンパイルしようとしたが、このコードはちょうどthreadを継承し、呼び出し->start()プロンプトエラーを呼び出した.
2、2つのスレッド変数の名前は同じで、1つの実行(ブロック)しかできません.
class cct extends Thread {
                private $c;
                
                function __construct($c){
                    $this->c=$c;
                }
                public function run() {
                    while($i++<10){
                        usleep(100000);
                        echo $this->c;
                    }
                }
            }
function mkt($c){
    $t = new cct($c);
    $t->start();
}
$a = new cct("a");
$a->start();
$a = new cct("b");
$a->start();

mkt("c");
mkt("d");

出力結果:aaaaaaaaabcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcddddddddddddd
したがって,すべてのスレッドは事前に構築されなければならず,後でコード実行時にいつでも生成することは不可能であり,evalを使用しても無駄である.