精華區beta Programming 關於我們 聯絡資訊
※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言: > > void main() > > { > > framework_init(); > > Instance_init(); > > while (event_occur()) > > { > > dispatch_event(); > > } > > } > 假設 event_occur() 在某個時間點或事件狀況下為 true , 所以 dispatch_event() > 就對應被啟動執行. > A. 是等這個 dispatch_event() 一執行, 對應的 event_occur() 原 true 狀態 > 1. 很快就被清除 > 或 > 2. dispatch_event 完成之後, 才可能改變或不變 event_occur()這裡的用法就像是windows的WaitMessage() 有訊息/event要處理的時候才會回傳, idle的時候是處於suspend狀態的 至於回傳值是唯有程式要結束時才會回傳false > B. 下一個 while loop 再 check 的時間是等 dispatch_event() > 1. 完成 > 或 > 2. 部份完成 > 就能回到 while loop 做下一個 check ? 我想這沒有多大疑問吧 以while (A) B; 為例, 當然是B跑完之後才會重新check A > C. 下一次 event_occur() 的執行是必需等 dispatch_event() > 1.完成之後 > 或 > 2.未完成 > 就可以有 event_occur() 又產生 true status ? > 假如 dispatch_event 可以發出請求給另一部機器 X 做事, 只要發出通知, 不等事 > 做完, 就回到 while loop . 而 event_occur() 的產生, 假設是由另一部機器 A > 執行, 假如產生與否是跟前一個 event 無關的, 那這個新 event 就會由 dispatch > 啟動出另一部機器 Y 去做事. 此時, X 與 Y 就可能會 "同時做不同的事". X跟Y既是兩台機器 當然可以同時做不同的事 就算是同一台機器的同一個程式, 也有可能有兩個thread 同時執行類似以上的 event loop. 但是重點是thread 本身是循序的. 我想說明的是, 像gsj此類因為不了解 framework內部的機制而誤認framework為非循序的, 是一件多麼可笑的事. 循序化是gsj自己提出的, 他自己也無法給出一個完整的定義(沒有main() ? 哈哈) 所以我也只是猜測他最可能的定義來反駁. 我想..任何一個有大腦的人都會知道 幾乎世界上所有的language,都是他所謂的循序化. 包括C++/C/Java/Pascal/Perl/Python -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: NK219-91-72-93.adsl.dynamic.apol.com.tw