- - PR -
ローカル変数は、絶対に共有されない・・・?
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-06-12 08:53
ASP.NETには限らないです。 Windowsフォームであろうと、コンソールアプリケーションであろうと、マルチスレッドを使用すると、 顕在化します。 たまたまASP.NETがマルチスレッドのかたまりなので、現象として確認されやすい、だけです。
原則は、これでよいのですが、例外があったりします。 具体的には、関数/サブルーチン内部で「Static」宣言したローカル変数は、共有されます。 以下は、簡単な確認プログラムです。 Module Module1 Public nPublic As Integer = 0 ' ←←←←←←←←←←← 共有される Private nPrivate As Integer = 0 ' ←←←←←←←←←←← 共有される Public Function PublicMember(ByVal num As Integer) As Integer nPublic = nPublic + num Return nPublic End Function Public Function PrivateMember(ByVal num As Integer) As Integer nPrivate = nPrivate + num Return nPrivate End Function Public Function LocalDim(ByVal num As Integer) As Integer Dim localDim As Integer = 0 ' ←←←←←←←←←←← 共有されない localDim = localDim + num Return localDim End Function Public Function LocalStatic(ByVal num As Integer) As Integer Static localStatic As Integer = 0 ' ←←←←←←←←← 共有される localStatic = localStatic + num Return localStatic End Function End Module # VBなんか嫌いだ〜 | ||||||||
|
投稿日時: 2003-06-12 18:37
たくさんのレスありがとうございます。
ものわかりが悪く、いろいろお手数かけました。 Local変数はStaticにしない限り共有されることは無いのですね。 安心しました。 開発しているWebApplicationは、2Gのメモリ・2.4GHzのCPUのマシンでも コンパイルがしばしば通らないぐらい大きく、画面は280個以上、 取り込んでいるDLLは40個以上で、それらはモジュールブロックの中の 共通関数を使っていたのです。 修正しないで済む方法はないか・・・と鬱々していたのですが、 ほっとしました。 良かったです。 |
«前のページへ
1|2|3