@IT情報マネジメント会議室は、2009年4月15日に新システムに移行しました。
新たに書き込みを行う場合には、新しい会議室をご利用ください。
- PR -

なぜ「グローバル変数」を使っては、いけないのですか?

投稿者投稿内容
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-04-21 18:11
るぱんです。
引用:

はにまるさんの書き込み (2004-04-21 17:07) より:
「[その他]」


(爆)
お見事。(笑)
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-04-26 16:45
はにまるです。

 メモリ常駐といえば、スタティック変数を忘れていました。
 「スタティック変数」って言語を問わない一般的用語?

 スタティック変数は、スコープ制限を受けながらも、
 処理がスコープ外に移っても、変数値を破棄せずに値が保持される変数です。

 参照がメインのグローバル変数の代用として、関数で囲む話がありましたが、
 もうちょっと具体的に行くと、

 関数から値を取得する場合、その関数内部で毎回ネットワークを経由し値取得を行っていると
 グロバール変数で格納する場合と比べ ネットワーク負荷を掛けてしまう問題が発生し、
 ネットワークが貧弱だと謙虚に障害として問題化する。

 この時、スタティック変数を用いて、ネットワークを経由した値を取得を1回のみにし
 以後スタティック変数から値を返す様にする。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-04-26 16:59
NAL-6295です。

引用:

はにまるさんの書き込み (2004-04-26 16:45) より:

 ネットワークが貧弱だと謙虚に障害として問題化する。




顕著の間違い?

引用:

 スタティック変数は、スコープ制限を受けながらも、
 処理がスコープ外に移っても、変数値を破棄せずに値が保持される変数です。




マルチスレッドの時は、取り扱いに注意が必要ですね。
singletonパターンはよく利用しますが。。。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-04-26 17:15
引用:

NAL-6295さんの書き込み (2004-04-26 16:59) より:
引用:

 ネットワークが貧弱だと謙虚に障害として問題化する。


顕著の間違い?


「すみません僕、障害ですが問題発生させて宜しいですか?」
「いや〜、その謙虚な姿勢に免じて今回は許してやるよ。」
なんて、んな、アホな!

と言う事で、「顕著」が正解です。

引用:

引用:

 スタティック変数は、スコープ制限を受けながらも、
 処理がスコープ外に移っても、変数値を破棄せずに値が保持される変数です。


マルチスレッドの時は、取り扱いに注意が必要ですね。
singletonパターンはよく利用しますが。。。


あう!そうですね、マルチスレッドでは注意が必要ですね。
システム変数位のプロセス起動時に変動要素の無い物で無いと。

そう言えば、
同時に複数のスレッドから関数を初回参照されたら内部的にどうなるでしょうか
やっぱり、Class変数もしかりで参照時は待ち行列管理されるんでしょうね。

ちょっと話は変りますが、オブジェクト指向言語でない言語では、
各マルチスレッド毎にメモリ管理をして、スレッド番号などをキーにして
参照してたのでしょうか....?
私には、とても出来ない芸当です。
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-04-27 09:19
引用:

はにまるさんの書き込み (2004-04-26 17:15) より:
ちょっと話は変りますが、オブジェクト指向言語でない言語では、
各マルチスレッド毎にメモリ管理をして、スレッド番号などをキーにして
参照してたのでしょうか....?
私には、とても出来ない芸当です。


これ、大歩危ですね。
各ルーチンをスレッド毎にインスタンスを生成するかの様に、
言語が内部的に内部変数を独立し管理するんですよね。失敗。


[ メッセージ編集済み 編集者: はにまる 編集日時 2004-04-27 09:21 ]

スキルアップ/キャリアアップ(JOB@IT)