私は現在、手作りのアクターを使用するアプリケーションを持っています。私の計画は、libcaf に移植することです。
現在の状態は次のとおりです。システム (別名アクター) がサブスクライブしてメッセージを取得する 1 つの大きなグローバル メッセージ キューがあります。それらは、そのグローバル キューへのメッセージで応答します。
システム全体は、Linux rt-preempt カーネルで実行されるリアルタイム アプリケーションです。GUI スレッドはシステム (アクター) そのものですが、RT 優先ではありません。
現時点では、私のシステムはメッセージの受信者を知る必要はありません。
私の移植のアイデアは次のとおりです。1 つのグローバル アクターをグローバル メッセージ キューの代わりとして使用し、それがメッセージの登録を処理します。このようにして、デバッグ目的でメッセージのログを簡単に取得でき、すべてのアクターに考えられるすべてのターゲットを知らせる必要はありません。
現実世界への連絡を処理する IO システム (canbus) があります。
現在のシステムでは、GUI スレッド + システムを生成します。RT が初期化されるのを待ちます。GUI スレッドが生成された後、RT Preempt 優先順位に切り替えて、他のシステムを作成し、スタックを事前にフォールトします。すべての設定が完了したら、RT が起動していることを GUI に通知します。これでシステムが初期化されました。
致命的なことが発生したり、システムをシャットダウンする必要がある場合は、メッセージを送信すると、すべてのシステムがシャットダウンし、すべてのスレッドが参加します。
私の質問は次のとおりです。libcaf の RT スレッドから GUI アクター/スレッドを分離するにはどうすればよいですか? 別のプロセスで GUI をフォークすることをお勧めしますか? 異なる RT 優先スレッドでアクターをスポーンできますか?
編集:spawn
オプションが見つかりましたdetached
。スポーンされたアクター (切り離されたアクターの子) は同じスレッド上にありますか?