【转】编程思想之消息机制
?
從一個劇情開始
路遙的《平凡的世界》因為翻拍成電視劇,又再次火起來了!我們就從這里開始吧,其小說是以這樣一個場景開頭的:
在一個半山腰縣立高中的大院壩里,在一個校園內的南墻根下,按班級排起了十幾個縱隊的年輕男女,各班的值日生正忙碌地給眾人分發飯菜…… 菜分為甲、乙、丙三等,甲菜以土豆、白菜、粉條為主,還有可人大肉片,乙菜沒有肉,丙菜只有清水煮白蘿卜。主食也分為三等:白面饃,玉米面饃,高粱面饃,白、黃、黑分別代表了三種差別,學生們戲稱歐洲、亞洲、非洲。每個人的飯菜都是昨天登記好并付了飯票的,在這一長長的隊伍中自然以光景較好的富家子弟排在最前,光景一般的隨后,而那些家庭貧困少吃缺穿的學生只能在其他學生走后才姍姍來遲……?
這一活生生的例子雖然看著有些悲涼(排隊打飯的情景相信曾經是學生的你一定經歷過,可能沒這般悲涼而已),卻像極了消息機制的原理,也許發明消息機制的靈感就是原來于這樣的生活吧!排隊的學生就是消息隊列,值日生分發飯菜就消息循環并完成消息處理,學生吃飯就類似于事件處理。
?
什么是消息?
何為消息?消息就是帶有某種信息的信號,如你用鼠標點擊一個窗口會產生鼠標的消息,鍵盤輸入字符會產生鍵盤的消息,一個窗口大小的改變也會產生消息。
消息從何而來?根據馮·諾依曼的體系結構計算機有運算器、存儲器、控制器和輸入設備和輸出設備五大部件組成,消息主要來自輸入設備,如鍵盤、鼠標、掃描儀等,也可來自已窗口和操作系統。?
消息機制的三大要點:消息隊列、消息循環(分發)、消息處理。其結構如下:
圖1.消息機制原理
?
消息隊列就是存放消息的一種隊列,具有先進先出的特點。每產生一個消息都會添加進消息隊列中,在Window中,消息隊列是在操作系統中定義的。消息隊列就如同一群排隊打飯的少男少女,這群人中光景較好的排在前面,光景較差的排在后面,可以理解成是一種優先級隊列!要想更多的了解隊列的相關知識,可參見隊列。?
消息循環就是通過循環(如while)不斷地從消息隊列中取得隊首的消息,并將消息分發出去。類似于上面的例子中分發飯菜的值日生。
消息處理就是在接收到消息之后根據不同的消息類型做出不同的處理。上面例子中值日生根據學生不同類型的飯票給他們不同等級的飯菜,就是消息處理,學生手中的飯票就是消息所攜帶的信息。
事件是根據接收到的消息的具體信息做出的特定的處理,放在代碼中就是事件響應函數。上面的例子中,學生拿到飯菜后吃飯,就是具體的事件。
?
轉自luoweifu《編程思想之消息機制》
總結
以上是生活随笔為你收集整理的【转】编程思想之消息机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: react与jQuery对比,有空的时候
- 下一篇: Linux 网络编程详解二(socket