[問題] while流程控制

看板C_and_CPP (C/C++)作者 (.)時間13年前 (2013/04/25 08:01), 編輯推噓3(3010)
留言13則, 7人參與, 最新討論串1/1
我遇到一個流程控制的問題 感覺是個簡單問題,高手用小腦反射就秒殺了 但是我經驗不夠 + 天資愚鈍 = 想破頭想不出解答 下面我大概敘述我想做的事情 我有一個Queue,裡面放著我想做的事情 f1, f2, f3... while loop不段檢查每個timer timer1 expire then run f1 timer2 expire then run f2 timer3 expire then run f3 每個 f 執行之後不需回頭再執行,用完就丟 while 1 if timer1 expired pop Queue // 我希望這邊只執行f1 if timer2 expired pop Queue // 我希望這邊只執行f2 if timer3 expired pop Queue // 我希望這邊只執行f3 但是如果當timer1 expired成立之後 雖然timer2 and timer3還在跑 但是while loop透過 timer1 expired的條件 就已經把所有f1 f2 f3...pop and 執行了 可否請高手指點迷津 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 204.96.168.3 ※ 編輯: sean72 來自: 204.96.168.3 (04/25 08:04) ※ sean72:轉錄至看板 Programming 04/25 08:04

04/25 08:16, , 1F
跑完f1時把timer1設成別的值,if式子可能也要改一下
04/25 08:16, 1F
不行耶 因為進入while不斷檢查之前,timer都已經設定好了 thx ※ 編輯: sean72 來自: 204.96.168.3 (04/25 08:25)

04/25 08:30, , 2F
我指的是如果timer只會遞減到0,可以if(timer==0){
04/25 08:30, 2F

04/25 08:31, , 3F
pop; do; timer=-1;}
04/25 08:31, 3F

04/25 08:47, , 4F
反正一定要加入flag判斷,只是看能不能跟timer整合而已
04/25 08:47, 4F

04/25 09:08, , 5F
能用switch選擇,一樣是要有flag
04/25 09:08, 5F

04/25 11:45, , 6F
感覺像if的判斷出了問題..
04/25 11:45, 6F

04/25 11:47, , 7F
其中一個if true, 其他的if也被設成true..
04/25 11:47, 7F

04/25 13:40, , 8F
非常深奧。
04/25 13:40, 8F
我的方法如下 while 1 if timer1 expired && f1_flag done == false pop Queue run f1 f1_flag done == true 其他類推 這樣應該就沒有問題了 謝謝大家幫忙討論 ※ 編輯: sean72 來自: 98.145.136.10 (04/25 13:59)

04/25 20:23, , 9F
....這樣子看起來根本不需要Queue嘛~
04/25 20:23, 9F

04/25 20:24, , 10F
pop 出來的東西和執行的東西也不一樣...有點難懂耶XD
04/25 20:24, 10F

04/25 20:28, , 11F
我也不懂你要queue做什麼
04/25 20:28, 11F
因為timer 是另外一個thread 當timer停止的時候會通知main thread去執行 f ※ 編輯: sean72 來自: 204.96.168.3 (04/26 05:12)

04/26 19:36, , 12F
加個Flag在if內,如果做完了在完成那邊清除
04/26 19:36, 12F

04/26 19:37, , 13F
然後每次WHILE前面先檢查FLAG,如果FLAG=1就不要進去
04/26 19:37, 13F
文章代碼(AID): #1HU794k8 (C_and_CPP)
文章代碼(AID): #1HU794k8 (C_and_CPP)