6

可能な重複:

PHPにおけるスレッドセーフまたは非スレッドセーフとは

何かがスレッドセーフであるかどうかはどういう意味ですか?

たとえば、PHPのsetlocale()はスレッドセーフではありません。

ロケール情報はスレッドごとではなくプロセスごとに維持されます。もし   IISやApacheなどのマルチスレッドサーバーAPI上でPHPを実行している。   Windowsでは、ロケール設定が突然変更されることがあります。   スクリプト自体は呼び出されませんでしたが、スクリプトは実行中です。   setlocale()これは、他のスクリプトが異なる場所で実行されているために発生   同じプロセスのスレッドを同時に変更する   setlocale()を使用したプロセス全体のロケール。

http://php.net/manual/en/function.setlocale.php

これは実際にはどういう意味ですか?何かがスレッドセーフかどうかは良いことでしょうか。

どのような条件下で、あなたの問題に対してスレッドセーフな、あるいはスレッドセーフでないソリューションが必要ですか?


  • あなたはそれがそれが特定のウェブサーバ設定だけに関係すると説明しているその部分を読みましたか?選択または使用できるものではありません。そしてsetlocale潜在的な副作用の良い例です。 (最近のWindowsバージョンでは実際にスレッドごとに動作することを除いて) - mario

1 답변


4

スレッドセーフは良いことです、それは複数の並行スレッドがあるかもしれない間、それらは競合状態、並行性の問題などを持たない安全な方法で互いに話し合っていることを意味します

スレッドセーフティは、この分野で適用可能なコンピュータプログラミングの概念です。   マルチスレッドプログラムのコンテキスト。次の場合、コードの一部はスレッドセーフです。   スレッドセーフな方法で共有データ構造を操作するだけです。   これにより、同時に複数のスレッドによる安全な実行が可能になります。   スレッドセーフなデータ構造を作成するためのさまざまな戦略があります。

ソース

リンクされた質問


関連する質問

最近の質問