我目前有一個應用程序使用手工製作的演員。我的計劃是將其移植到libcaf。端口手工製作系統libcaf
目前的狀態是: 我有一個很大的全局消息隊列在我的系統(又名演員)訂閱得到他們的消息。他們用消息來回應該全局隊列。
整個系統是一個運行在Linux rt-preempt內核上的實時應用程序。 GUI線程本身就是一個系統(actor),但它不在RT優先級上。
現在我的系統不需要知道他們的消息的接收者,因爲接收者註冊他們想要的。
我的移植想法如下:我使用一個全局actor來替換我的全局消息隊列,並處理消息的註冊。這樣,我可以輕鬆記錄消息以進行調試,並且我不需要讓所有演員知道所有可能的目標。
我有一個處理聯繫到現實世界的IO系統(canbus)。
在我目前的系統中,我產生了GUI線程+系統。它等待RT初始化。在gui線程產生後,我切換到RT搶佔優先級並創建其他系統,缺省堆棧等等。當所有的東西都安裝完成後,我通知gui RT已啓動。現在我的系統被啓動。
當一些致命的事情發生或系統需要關閉時,我發送消息,所有系統關閉,所有線程都加入。
我的問題是: 我怎樣才能從libcaf中的RT線程分離GUI角色/線程? 你會推薦在單獨的過程中分離GUI嗎? 我可以在不同的RT優先級線程上產生actor嗎?
編輯:我找到spawn
選項detached
。產生的演員(獨立演員的小孩)是否在同一個線程上?
謝謝你精心設計的答案!我要寫一個概念證明。關於線程屬性:它大多隻是'sched_setscheduler'和'mlockall',需要在RT線程上調用一次。所以我想沒有什麼特別添加到libcaf。 –