本篇解答兩個相關問題:

  • 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