[PHP-users 32354] Re: スレッドとstatic変数の関係について

Tomoyuki Asakawa tom @ asakawa.ne.jp
2007年 6月 30日 (土) 14:55:02 JST


あさかわ

なんか、すげー考え過ぎの様な気がします。

On 2007/06/30, at 13:12, A.HASEGAWA wrote:

> PHPのWebアプリ上(複数プロセス/マルチスレッド環境)で、
> 単一のHTTPリクエスト内であれば、安心してstatic変数 
> が利用できるかどうか、

ご心配なされてるのは、static変数が、安心して利用できるかど 
うかですけも
そんな事を、心配すると、普通の変数すら、スレッドセーフかどうか
心配になってしまいませんか?

すくなくとも、PHPの文法上(言語仕様)で提供されてる基 
本機能が
スレッドセーフで無かったならば、それは、「バグ」だと思います。

PHPの文法上ではなく、オマケとして、提供されてる、ライブラリ
が、スレッドセーフに出来ていないかもしれないという
不安は、みんな持っていると思う。

それは、PHPがスレッドセーフではないという意味ではなく
PHPでスレッドセーフではない、プログラムを書く事ができてしまうか 
らです。

しかし、標準提供されてる、ライブラリぐらいは、スレッドセーフだと 
思います。

でも、たとえば、
date_time_set()
date_date_set()
なんてのは、どう考えても、実行結果は、スレッド間で競合します。
しかし、これをもって、PHPが、スレッドセーフではないとは言 
わないと思う。

ところで

 >JavaのWebアプリ(Servlet)ではクラスのインスタンス 
変数さえも
 >場合によっては競合をおこしてしまい、バグの原因になる事もありま 
す。

これって事実ですか?
仮に事実としても、これも、javaの仕様の問題ではなく
その、クラスの実装上の問題ではないのですか?
そうじゃないと、オブジェクト指向言語の根幹に関わる話になって
javaなんて使えねー!になってしまうとおもいます。







PHP-users メーリングリストの案内