Produce consumer 維護

這是我最近研究很久的程式架構,queue!問題如上,有高手可以給我範例
關於循環對列方式或者是解決方法
拿紅綠燈來說好了!
基本的 紅燈(3秒) 綠燈(2秒) 黃燈(1秒) 這是排隊式序列
如果變成詢環式 紅燈(3秒) 綠燈(2秒) 黃燈(1秒)
                    紅燈(3秒) 綠燈(2秒) 黃燈(1秒)
一直循環但是如果要強制停止,ps(請使用queue方式) , 要如何解決,才不會讓produce 失效

根據PRODUCER設計的不同,整個問題的視角也不同。
故這樣問不是很確定能解決你的問題。
以你舉例的而言,
紅燈→綠燈→黃燈
對於CONSUMER而言都只是執行結果,這大家都差不多,
重點是PRODUCER以何種方式產生出事件給CONSUMER,這點需要了解才能夠解決你的問題。

回到原本問題上。
p/c的方式本來就是以隊列來執行,當p無產出時則c無動作。
若要讓其循環,則必須於c動作後增加一個觸發使p之後能重複產出,此謂p總是有保持產出一定量的事件給c執行<-此為假設
同時使用queue的方式皆為先進先出(ENQUEUE ELEMENT -> DEQUEUE ELEMENT)。
若發生強制停止,則該觸發則需後進先出(ENQUEUE ELEMENT AT OPPOSITE END -> DEQUEUE ELEMENT)
如此即可優先處理下一個中斷。

當然這個方法的前提是你的p/c設計跟我假設的是一樣的才有用~

大大說的我理解!我有試過後面加上user event !
雖然解決問題!不過我覺得殺雞焉用牛刀!
所以我一直不能理解循環式架構的序列方式要如何運用
我把序列的所有元件都詳細看過!
如您所說的(ENQUEUE ELEMENT AT OPPOSITE END -> DEQUEUE ELEMENT)插隊
我也是一樣的建立起來我在猜想!
queue會不會遺失所下的命令再循環式架構??我還在研究!
我把最後error拿出來看!他顯示輸入是錯誤訊息!路徑錯誤
最後我把release 掉!問題就解決了!
序列的這套架構
跟大大報告一下 在p端偵測
                     那c端作偵測他就會當機! (所以c端不能接event)

所以把所有偵測人機介面的動作都丟到p 端!這時候 如何做 c端傳回p端!這樣架構才完整!
所以我最後用上user event!就解決問題了!
但是我不知道如果序列要做循環式架構 需要用到user event  那他的價值就比不上state machine 開發來得快速(雖然會有polling)
請高手您給我只點一下!到底怎樣做才可以把序列用到淋漓致盡! (不是序列不好用,是我太弱)

基本上就我有碰過的範疇上(工廠測試、資料庫操作、參數分析、類神經網路)
會用到p/c的主要在於多對一,也就是很多控制端、一個執行端,
優勢在於控制端皆可下命令給執行端,由執行端逐一執行步序已完成各控制端的需求
ex.五個工作站都於測試結束後需要列印報表,利用p/c來處理
ex.五個工作站於執行中皆需要進行資料庫存取,因網路限制故統一連到某台電腦後利用p/c取得

若非這樣的需求,而是一對一的處理,那建議使用觸發式的state machine
即一個觸發迴圈、一個狀態迴圈(類似p/c架構,但狀態迴圈本身即state machine)
如此觸發迴圈扮演p的角色,可進行各項偵測,並根據各種輸入、觸發來決定state machine要執行哪些已定義的連續步序
執行的過程可簡單插入各種觸發於已定義的連續步序(如中斷)
再進階一點,可作兩重的狀態機
第一重(外圈)執行系統層面的判斷,如異常中斷觸發、資料處理異常觸發、系統初始化等
第二重(內圈)則是執行一般層面的判斷,如已定義的連續步序、單一HMI操作指令等

以上提供參考

謝謝你的指導!我會加強自己!謝謝