-1
我上課,讓我們把它稱爲「引擎」,它包含類似事件循環的邏輯都可以由下面的僞代碼來說明:如何實現引擎類,它不會阻止它的用戶
for(;;) {
int interruptId;
waitForInterrupt(); // blocking wait
switch(interruptId) {
case REQUEST_DATA:
doSomeStuff();
...
}
}
事件循環用於中斷處理(來自硬件設備的驅動程序)。 引擎將被客戶端使用。客戶應該能夠啓動/停止引擎。 但啓動引擎不應該掛起客戶端。
我的意圖:當Engine啓動時,它啓動一個新的線程,其中執行(;;)的事件循環。
問題是一個解決方案,你能否提出適用於這種情況的現有設計模式,以及我應該考慮的任何實現建議和可能的瓶頸。
NB!更新:引擎類是提供給客戶作爲一個動態庫
如果您的客戶端已經有一個事件循環,可以將發動機事件循環合併到它,如果你想避免額外的線程。 –
引擎類作爲一個單獨的動態庫提供給客戶端,所以我不能合併它們的循環 –
「合併」可能是一個糟糕的選擇 - 怎麼樣「來自」 - 即。對於每個客戶端事件循環迭代,還要檢查引擎是否有未決事件(如果是,則處理引擎事件 - 如果不是,則只執行下一次客戶端循環迭代)。 –