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

kanonbell kanonbell.sky @ gmail.com
2007年 6月 30日 (土) 16:35:30 JST


こんにちは

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

まあそれは私も同意。
でもまあ、「その辺は勝手にやってくれるから気にしなくていいよ」は
常に考慮に入れる必要のある言語を使っていた人にとっては
非常に座りが悪い思いをするみたいで。
変数の型の自動変換とかもそうですね。

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

大垣さんのブログとか拝見すると結構いい加減だなあとか思わないでも
ないですけどね。
Linux上がりの技術はWindows環境での対応や動作確認が十分で
ないことも往々にしてありますし。
PHPはよくやってる方かなとは思いますけれども。

人の作ったものを無条件で信じる訳には行きませんが、どこかで
線を引いて信じなければ使うことすらできません。
線を引く場所は人によって様々でしょうけれど、本件に関しては
疑ってたらPHP自体使えなくなってしまうくらい根本的な部分
だと思います。

根本的過ぎてPHP開発者レベルじゃないと満足のいく答えを
出すことは出来そうにない気がしますので、どうしても気になるなら
ソース読んで実装を確認していただくしかないでしょう。


>  >JavaのWebアプリ(Servlet)ではクラスのインスタンス
> 変数さえも
>  >場合によっては競合をおこしてしまい、バグの原因になる事もありま
> す。
>
> これって事実ですか?
> 仮に事実としても、これも、javaの仕様の問題ではなく
> その、クラスの実装上の問題ではないのですか?
> そうじゃないと、オブジェクト指向言語の根幹に関わる話になって
> javaなんて使えねー!になってしまうとおもいます。

http://www.atmarkit.co.jp/fjava/rensai2/webopt04/webopt04.html

Javaは分かんないですが、こういう記事見ると納得いくでしょうか。
「インスタンス変数にも注意せよ」のあたり。
私の場合はC++でしたが、Servletのマルチスレッドモデルのように
インスタンスが共有されてたので、普通にインスタンス変数使ってたら
アホみたいなことになってました。

まあ実装の仕方の問題っていえばそうなんですが、ちゃんと意識
してないとはまりますし、どこがおかしいのかもわかんなかったり。
PHPでは考えなくていいどころか、考えると無駄にはまる要素
じゃないかって思いますが。。


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