Pthreads をインストールするには、基本的に PHP を再コンパイルし、--enable-maintainer-zts パラメーターを追加する必要がありますが、これを使用するためのドキュメントはほとんどありません。バグ 予期しない問題は生成環境でのみ解決できるため、実際のマルチスレッドについては、Python、C などを使用してください。
1. インストール
リーリー
作成&&作成インストールpthreadsをインストールする
pecl pthreads をインストールする
2. スレッド リーリー
3. ワーカーとスタッカブル
ミューテックスロックはどのような状況で使用されますか?複数のスレッドを制御する必要があり、同時に動作できるスレッドが 1 つだけである場合に使用できます。ミューテックスロックの有無による違いを示す簡単なカウンタープログラム
複数のスレッドと共有メモリ
共有メモリの例では、ロックは使用されていないため、作業メモリの操作自体がロックの機能を持っている可能性があります
リーリー
一部のシナリオでは、thread->start() でプログラムの実行を開始したくないが、スレッドがコマンドを待機するようにしたい場合があります。 thread->wait(); のテスト関数は、スレッドが thread->start() の直後に実行されるのではなく、thread->notify();
プールクラス
動的キュースレッドプール
上記の例は、スレッド プールがいっぱいになったときに start を実行する例です。次の例は、スレッド プールに空き領域ができ次第、新しいスレッドを作成します。
リーリー
リーリー
7. マルチスレッドのファイルの安全な読み取りと書き込みLOCK_SHは共有ロックを取得(プログラム読み込み)
LOCK_EX 排他ロックを取得(
LOCK_UN はロックを解放します (共有か排他かに関係なく)
ロック時に flock() をブロックしたくない場合は LOCK_NB
pthread と pdo を同時に使用する場合は、public static $dbh を静的に宣言し、シングルトン モードでデータベース接続にアクセスする必要があることに注意してください。
労働者とPDO
プールとPDO
スレッドプール内のリンクデータベース
上記のプログラムをさらに改善するために、シングルトン モード $this->worker->getInstance(); を使用してグローバルに 1 つのデータベース接続のみを作成し、スレッドは共有データベース接続を使用します
リーリー データベースをマルチスレッドで動作させる概要
一般に、pthreads はまだ開発中であり、まだいくつかの欠点がありますが、pthreads の git がこのプロジェクトを継続的に改善していることもわかります。
永続的なデータベース接続は非常に重要です。そうでないと、各スレッドがデータベース接続を一度開いてから閉じることになり、多くの接続タイムアウトが発生します。
ここではphp pthreadsマルチスレッドのインストールと使い方に関する関連知識を紹介し、今後も更新していきます。
興味があるかもしれない記事: