[1226] VM間排他制御について
投稿者:山
2009/04/20 20:09:57
以下が私の考える見えない排他制御です
1.システム変数は1つのVMのみ読み書きが出来る、配布元VMとする。
2.他の受信VMは1回のみ変数を読むことが出来る。
(ローカル変数に代入し各種処理をする)
3.2回目を読もうとすると実行時エラーとなる。
4.2回目を読みたい時は、変数更新の関数を呼びまた1回のみ読める。
これで意識しない排他制御が可能になると考えています。
(変数更新を毎回呼んだら意味はありませんが・・・)
これが私が実装しようとするスレッド間セーフなシステム変数です。
もしよろしければ、ご意見をお聞かせください。
diksamでスレッドセーフのVMが出来ても、グローバル変数が可能な方法があります。それは、セマフォーグローバル変数を宣言するとともに、ロックとフリーの関数を提供します。C++などでは、変数の排他管理は自分でしろと最小高速なセマフォーがあります。これと同じものを提供すれば、スレッドセーフなVM間の通信制御も可能になります。もちろん、もっと簡単にしてグローバルは1VM内でのみ有効であるとして、VM間変数と言う特殊な変数を作って、セマフォー処理をしてもいいと思う。もしお暇でありましたら、スレッドセーフなVMもご検討ください。
(なにぶんVMもほとんど知らないのに適当なことを言っているのかもしれません、その時は申し訳ありません)