2

可能であればご協力ください。DB から X 個の行を引き出し、それらを 20 個の配列の配列に分割し、同時に処理するためにスレッドに渡すつもりでした。

プロセスが同時に機能していることを確認するために、スレッド番号をエコーし​​てから 20 までカウントするクイック スレッドを作成しました。代わりに、2 番目のスレッドが実行を開始する前に、最初のスレッドが 20 にカウントされます。つまり、「1 で 1」...「1 で 20」の場合は「2 で 1」のみです。

<?php
class helloworld extends Thread {
    public function __construct($arg){
        $this->arg = $arg;
    }
    public function run(){
        if($this->arg){
            for ($i=1;$i<=20;$i++){
                echo $this->arg ." AT ";
                echo $i." ";
                sleep(1);
            }
        }
    }
}

?>

次に、それを呼び出すために使用します

for ($i=1;$i<=$num_threads;$i++){
    $thread[$i] = new helloworld($i);
    if($thread[$i]->start())
        $thread[$i]->join();
}

私が見ているものは正しいですか?それとも私はここで愚かなことをしていますか?

ありがとう

ロブ

4

1 に答える 1

3

pthread の join() 関数は、指定されたスレッドが終了するのを待ちます。そのスレッドがすでに終了している場合、pthread の join() 関数はすぐに戻ります。指定されたスレッドは結合可能でなければなりません。

したがって、開始された各スレッドが終了するのを待ってから、ループに進みます。

于 2013-10-07T08:40:33.627 に答える