本篇解答兩個相關問題:
- Genero 支援多執行緒嗎?
- Genero 能否啟動多個子程序,並在它們完成時收到通知?
核心說明
Genero 程序(fglrun)是單執行緒的,開發者無法依賴並行的執行緒同時執行。然而,這個限制並不代表無法實現類似多執行緒的功能——透過替代方案,同樣可以達到並行處理的效果。
程序管理
Genero 可以使用 RUN WITHOUT WAITING 語法啟動多個子程序。各程序透過 FGL_GETPID() 或產生 UUID 來識別自己,並將唯一識別碼作為命令列參數傳遞給子程序。
訊息傳遞系統架構
推薦的做法是實作一個以資料庫為基礎的訊息傳遞系統,包含以下核心功能:
- 程序的註冊與登出
- 訊息傳送
- 訊息數量查詢
- 訊息讀取
這個機制讓父程序(例如 process 123)能夠管理子程序(例如 process 456、789),透過在資料庫中儲存程序間的關聯對,實現父子程序之間的通訊。
與 Dialog 整合
作者特別強調:背景工作完成的觸發動作,應在使用者閒置時或對話框完成後執行,善用 ON IDLE 陳述式,而不是中斷使用者正在進行的互動。
前端通知
進階實作可以使用 Mobile Push Notifications 或 GBC 客製化功能,獨立於後端程序,向使用者即時顯示訊息數量等資訊。
重點摘要
尋求多執行緒功能的開發者,通常需要採用「不同的思考方式」,而非套用傳統的並行程式設計模式。Genero 的解決方案是:
- 使用
RUN WITHOUT WAITING啟動多個獨立的子程序 - 透過資料庫訊息系統實現程序間通訊
- 利用
ON IDLE在適當時機處理背景工作的回應 - 搭配 Push Notifications 或 GBC 客製化提供前端即時更新
原文:https://4js.com/ask-reuben/ig-173/
· 有任何 Genero 技術問題或翻譯疑問,歡迎來信
support@t100.app