度々恐れ入ります。
なるほど、「完全に独立させてしまう」そう言うことだったんですね。
解ってませんでした。
返信いただいてから、考えてみたんですが、
僕の、知識的に言語の内部を理解できるレベルではないので、出来る範囲で、
イメージしていたものに近い動作のものを作成してみました。
(別途、実行ファイルを使うので、当初要望の別プロセスで動く関数と言う定義の枠を超えた仕様にしてしまいましたが)
問題は、
処理スピードが出ないので、ゲームなどの当り判定などのリアルタイムのバックグラウンド処理に向かない。
exeファイルを別途配布する必要がある。(必要なプラグインも)
なので、使われるシーンは、余程の大きなデータを読み書きしたり。
複数のダウンロードを同時に行うなどの用途に絞られてしまいますが。
処理が遅い要因は、
必要ファイルの作成とCOPYDATA送受信の部分にあると思います。
exeの実行のトリガーの起動命令も処理が重い部分では無いかと思います。
別件で出している要望の共有メモリ@734の件でも出していますが
メモリの共有など工夫すれば、もっとシンプルに高速できるかもしれませんが今のところ先は見えてません。
//MultiTask\実行エンジン.exe//←のディレクトリと名前で直ぐ下のコードの実行ファイルを作成して保存。
//プラグインフォルダも同じ階層に配置します。
!母艦設計=`母艦の可視=オフ`。
!`プロセス.nako`を取込む。
終わる。
//ここまで
ここから下のコードで上のexeに渡す、コードを`プロセス.nako`ファイルとして作成して実行したり結果を処理してます。
//処理側側コード//MultiTaskフォルダと同じ階層に適当な名前で保存して実行
別プロセス結果とは文字列
母艦のCOPYDATA受けた時は~母艦のCD_ID&`,`&母艦のCD文字列&改行を別プロセス結果に追加。
10回
別プロセス[回数]をプロセスとして作成。
別プロセス[回数]→コード="{母艦のハンドル}に({時間の掛かる処理})を({回数})でCOPYDATA詳細送信"。
別プロセス[回数]→実行。
母艦=`通常100秒以上掛かる処理も10秒程度で処理できます。`
別プロセス結果を表示。
●時間の掛かる処理~"_=10秒待って、100の乱数&`,`&{CPU使用率取得}。"で戻る。
■プロセス
・コード ←コード設定 →コード取得
・ソースファイル ←ソースファイル設定 →ソースファイル取得
・実行結果
・実行~実行エンジンを起動して後始末。
・同期実行~実行エンジンを起動待機して後始末。
・コード取得~_=実行プロセスを開く。
・コード設定({文字列}S)~
実行プロセスが存在でなければ、Sを実行プロセスに保存。
違えば、重複実行エラー処理する。
・ソースファイル取得~_=ソースファイル_。
・ソースファイル設定({文字列}S)~
実行プロセスが存在でなければ、
Sが存在ならば、Sを開いて実行プロセスに保存。
違えば、`ソースファイルが見つかりません。`でエラー発生。
違えば、重複実行エラー処理する。
・後始末~実行プロセスをファイル完全削除。
・重複実行エラー処理~`別のインスタンスの実行プロセスの実行を先に済ませて処理してください`でエラー発生。
・作る~
実行パス=母艦パス&`MultiTask\`。
実行プロセス=実行パス&`プロセス.nako`。
実行エンジン=実行パス&`実行エンジン.exe`。
(プロセスのインスタンス作成済)でなければ、実行プロセスが存在ならば、実行プロセスをファイル完全削除。
プロセスのインスタンス作成済=はい。
・使い方~"別プロセスで実行するコードを設定するか実行ファイルを設定し実行メソッドを呼出します。"と言う。
・{非公開}実行エンジン
・{非公開}実行プロセス
・{非公開}ソースファイル_
・{非公開}インスタンス作成済{=0}
//ここまで