2011-11-30 12 views
6

可能性の重複:
What is thread safe or non thread safe in PHPPHPのコンテキストでスレッドセーフが意味するものは何ですか?

何かがあるか、スレッドセーフでない場合、それは何を意味するのでしょうか?例えば

、PHPにはsetlocale()はスレッドセーフではない:

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

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

これは実質的に何を意味するのでしょうか?何かがスレッドセーフであるかどうかは良いことですか?

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

+0

あなたは、特定のウェブサーバーの設定のみに関連すると説明した部分を読んでいますか?あなたが選んだり使えるものではありません。そして、 'setlocale'は潜在的な副作用の良い例です。 (最近のWindows版ではスレッドごとに実際に動作する点を除いて) – mario

答えて

4

スレッドは良いことですが、それは、複数の並行スレッドがあるかもしれない一方で、彼らは

など、競合状態を持っていない安全な方法で、お互いに並行性の問題を話している意味しますスレッドセーフは、マルチスレッドプログラムの文脈で適用可能なコンピュータプログラミングの概念です。 共有データ構造体のみをスレッドセーフな方法で操作すると、複数のスレッドによる安全な実行を同時に可能にする のコードは、スレッドセーフです。 スレッドセーフなデータ構造を作るためのさまざまな戦略があります。

Source

関連する問題