6

PHP は明らかにThreadクラスをサポートするようになりました。MutexおよびCondクラスもあります。それにもかかわらず、適切なオプションでコンパイルし、PECL 拡張機能を追加する必要があります。

どこから始めるべきか良いチュートリアルはありますか? 各クラス/メソッドのフェアユースを明確に示すもの。

これらのクラスを処理する方法がわかりません。できるだけ多くのメソッドを示す非常に単純なことを行う具体的な例が必要です。

ありがとうございました。

4

2 に答える 2

14

pecl で利用できるようにリリースされており、Windows は github ページでダウンロードできます... 可能であれば git (ソース)、より最近のコード ...

http://pthreads.orgにはさらに詳しい情報が含まれており、examples フォルダーもチェックアウトしてください ...

あなたが何をする必要があるかについてより具体的であれば、私は正確な答えを提供することができます.私に直接連絡してください...

ドキュメンテーションが不足していて申し訳ありません。私は、仕事をしているわずかな時間で pthreads を積極的に開発しています - 仕事で休暇中に書いたもので、今は仕事に戻っています - ドキュメンテーションはできるだけ早く更新されます時間を見つけて。

通常、スレッド化は複雑なものですが、その必要はありません... 100 行未満のスレッド プールを見たことがありますか?? https://github.com/krakjoe/pthreads/blob/master/examples/Pooling.php ... あります!!

PHP でスレッドを操作するための条件やミューテックスについて知る必要はありません。

ボードに飛び乗ってください、間違いなく、私はそれを完成させます...

于 2012-10-11T08:07:55.340 に答える
1

どの言語でも、スレッド化は簡単ではありません。別の考え方が必要です(非線形)。あなたが言ったことはリリースされたPHPバージョンでは利用できないので、pctnlとshmop機能で遊ぶことをお勧めします。具体的にはpcntl_forkです。どちらもしばらく前からサポートされています。これはマルチプロセッシングであり、スレッド化されていませんが、探していることを達成できる可能性があります。ただし、スレッド化の方が効率的です。

通常、フォークを使用して、親プロセスに作業をチェックさせ、それをフォークプロセスに委任してから、子プロセスが作業を実行している間にさらに作業をチェックします。親プロセスは、子プロセスのステータスを確認できます。たとえば、特定の数の子プロセスのみをフォークし、1つのプロセスが完了するのを待ってから、別のプロセスをフォークするようにすることができます。

最大500のプロセスをフォークし、その時点でCPU負荷が高くなりました。親プロセスはシステムの負荷をチェックし、負荷が高すぎる場合はそれ以上フォークしません。

本当に必要な場合は、フォークで共有メモリ(shmop関数)を使用して、スレッドで得られる機能の多くを取得できます。

于 2012-10-09T02:03:26.747 に答える