[1225] Re:ライセンスというか使用許諾というかについて
投稿者:山
2009/04/20 18:09:44
>ここですが、現状のVMでも、DVM_VirtualMachine構造体は複数生成できると
>思いますので(試してませんが)、yieldのような予約語を入れて中断できるように
>すれば「複数起動され個々がいつでも中断再開できる」という用途は達成できそうに
>思います。
はい、まだVM部分はざくっとしか見ていないので、内容のアドバイス大変にうれしいです。イメージ的には複数スレッドでVMが動くを目指しています。なおかつ中断状態をディスクに書き込み、読み出し再開を目指しています。(ちょっと無茶な仕様ですが^^;)
Diksam上でのグローバル変数は禁止します。システムが固有に持っているグローバル変数を用いてVM間のコミュニケーションをする予定です。この変数へのアクセスは、理想的にはDiksamの変数と同等に扱えればいいのですが、当面はアクセス関数からのアクセスかな。このシステム変数を使うことでスレッド間排他制御を自動でやりたいと思っています。利用者は排他制御を意識できない、しないレベルにしたい。(目標)
>そうではなくて、VMはあくまでひとつで、グローバル変数やヒープを共有し、
>複数のスレッドというかコルーチンというかファイバーというかを立ち上げられる
>ようにしようと思ったら、DVM_VirtualMachineのpcやらcurrent_executableやら
>current_pcやらをもうすこし整理する必要がありそうです。
今一番簡単にVMを考えるなら、総ての変数領域を、クラスの中にパックしてしまえばグローバル変数がないという条件で、完全なスレッドセーフのVMになるのではないかと思います。その場合、ヒープ領域も指定して持つと言う富豪プログラミングです。
私はまだVMもちらりとしか見ていないので、上記構想がどんなものかの評価が出来ていません。こうしたほうがよりよい等アドバイスが有りましたらよろしくお願いします。
ここ数日、Diksam0.4.01をVC++2005上で動作させることをトライしていましたが、多くのエラーとトラブルに遭遇し、まだ内容もわからずに修正するのは早計であった為、今現在はDiksam0.1を、VC++上に移植して作業をはじめています。0.1は少しの修正で移植できました。