專利名稱:多核瀏覽器下的消息傳遞方法與裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于瀏覽器技術(shù),涉及一種消息傳遞方法,更具體的涉及一種多核瀏覽器下的消息傳遞方法與裝置。
背景技術(shù):
在Windows應(yīng)用程序中,窗體是由一種稱為“UI線程(User Interface Thread)”的特殊類型的線程創(chuàng)建的。首先,Π線程是一種“線程”,所以它具有一個(gè)線程應(yīng)該具有的所有特征,比如有一個(gè)線程函數(shù)和一個(gè)線程ID。其次,“UI線程”又是“特殊”的,這是因?yàn)閁I線程的線程函數(shù)中會(huì)創(chuàng)建一種特殊的對(duì)象——窗體,同時(shí),還一并負(fù)責(zé)創(chuàng)建窗體上的各種控件。窗體和控件具有接收用戶操作的功能,它們是用戶使用整個(gè)應(yīng)用程序的媒介,沒有這樣一個(gè)媒介,用戶就無法控制整個(gè)應(yīng)用程序的運(yùn)行和停止,往往也無法直接看到程序的·運(yùn)行過程和最終結(jié)果。但是,窗體和控件又不具備獨(dú)立地響應(yīng)用戶操作(比如鍵盤和鼠標(biāo)操作)的功能,比如用鼠標(biāo)點(diǎn)擊了一個(gè)按鈕,并且看到了鼠標(biāo)“陷”下去,然后又還原,之后,就會(huì)在顯示器上看到了程序執(zhí)行了此按鈕所對(duì)應(yīng)的任務(wù),其實(shí),窗體和控件之所以能響應(yīng)用戶操作,關(guān)鍵在于負(fù)責(zé)創(chuàng)建該操作的Π線程擁有一個(gè)“消息循環(huán)(Message Loop) ”,這個(gè)消息循環(huán)由線程函數(shù)負(fù)責(zé)啟動(dòng)。而在多核瀏覽器中,每一個(gè)核都會(huì)擁有一個(gè)UI線程,也就是說每個(gè)核都有單獨(dú)處理用戶操作的能力,這樣一來,對(duì)于多核瀏覽器,要為每一核都要對(duì)應(yīng)開發(fā)出一套用戶操作結(jié)果,而對(duì)用戶來說,相同的執(zhí)行操作被不同的核接收到,其顯示結(jié)果就會(huì)不同。因此,在現(xiàn)有技術(shù)中,多核瀏覽器中存在每一個(gè)核都會(huì)對(duì)獲取到的消息進(jìn)處理而帶來的開發(fā)資源浪費(fèi)的問題。
發(fā)明內(nèi)容
本發(fā)明公開一種多核瀏覽器下的消息傳遞方法與裝置,用于解決現(xiàn)有技術(shù)中存在的因多核瀏覽器中存在每一個(gè)核都會(huì)對(duì)獲取到的消息進(jìn)行處理而帶來的開發(fā)資源浪費(fèi)的問題。為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供一種多核瀏覽器下的消息傳遞方法,并采用以下技術(shù)方案多核瀏覽器下的消息傳遞方法包括多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。進(jìn)一步地,所述多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理包括所述多核瀏覽器的任一核所對(duì)應(yīng)的UI線程獲取到所述消息;所述任一核所對(duì)應(yīng)的UI線程將所述消息通過所述任一核所對(duì)應(yīng)的IO線程發(fā)送給所述主框架;所述主框架的IO線程接收所述消息并將所述消息傳遞給所述主框架的Π線程。
根據(jù)本發(fā)明的另外一個(gè)方面,提供一種多核瀏覽器下的消息傳遞裝置,并采用以下技術(shù)方案多核瀏覽器下的消息傳遞裝置包括傳遞模塊,用于多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,并由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。進(jìn)一步地,所述傳遞模塊包括獲取模塊,用于所述多核瀏覽器的任一核所對(duì)應(yīng)的UI線程獲取到所述消息;發(fā)送模塊,用于所述任一核所對(duì)應(yīng)的UI線程將所述消息通過所述任一核所對(duì)應(yīng)的IO線程發(fā)送給所述主框 架;接收模塊,用于所述主框架的IO線程接收所述消息并將所述消息傳遞給所述主框架的UI線程。根據(jù)本發(fā)明的上述技術(shù)方案,由多核瀏覽器的主框架對(duì)接收到的消息進(jìn)行統(tǒng)一的處理,避免各個(gè)核獨(dú)自處理,從開發(fā)的角度,節(jié)省了開發(fā)時(shí)間,從用戶的角度,由主框架統(tǒng)一處理用戶輸入的消息,并統(tǒng)一呈現(xiàn)處理結(jié)果,提高了用戶的用戶體驗(yàn)。除了上面所描述的目的、特征和優(yōu)點(diǎn)之外,本發(fā)明還有其它的目的、特征和優(yōu)點(diǎn)。下面將參照?qǐng)D,對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖I表示本發(fā)明實(shí)施例所述的多核瀏覽器主框架與多內(nèi)核之間的關(guān)系示意圖;圖2表示本發(fā)明實(shí)施例一所述的多核瀏覽器下的消息傳遞方法的主要流程圖;圖3表示本發(fā)明實(shí)施例二所述的多核瀏覽器下的消息傳遞方法的示意圖;圖4表示本發(fā)明實(shí)施例所述的多核瀏覽器下的消息傳遞裝置的主要結(jié)構(gòu)示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說明,但是本發(fā)明可以由權(quán)利要求限定和覆蓋的多種不同方式實(shí)施。圖I表示本發(fā)明實(shí)施例所述的多核瀏覽器主框架與多內(nèi)核之間的關(guān)系示意圖。本實(shí)施例以多核瀏覽器主框架browser的主進(jìn)程有兩類子進(jìn)程為例,兩類子進(jìn)程可以為任何內(nèi)核的子進(jìn)程,如圖I中的chrome_render和ie_render,在圖I中,browser為該多核瀏覽器的主框架。圖2表示本發(fā)明實(shí)施例一所述的多核瀏覽器下的消息傳遞方法的主要流程圖。參見圖2所示,多核瀏覽器下的消息傳遞方法包括SlOl :多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架;S103 :由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。在步驟SlOl中,多核瀏覽器將獲取到的消息傳遞給所述多核瀏覽器的主框架,意指不管多核瀏覽器的哪一個(gè)核或者說窗體截獲到的消息,均禁止處理該消息,將該消息傳遞給多核瀏覽器的主框架所對(duì)應(yīng)的處理程序進(jìn)行處理。該方法的優(yōu)點(diǎn)可用一個(gè)具體的實(shí)例進(jìn)行說明,現(xiàn)有技術(shù)的技術(shù)效果為用戶在多核瀏覽器中的一個(gè)窗體中執(zhí)行單擊鼠標(biāo)“右鍵”的操作,接收該消息的窗體,對(duì)該消息進(jìn)行處理后,會(huì)給出一個(gè)處理的結(jié)果,顯示給用戶的結(jié)果就是在該窗體上呈現(xiàn)一“菜單”,如果該操作在另外一個(gè)窗體上執(zhí)行,則顯示的結(jié)果就是另外一個(gè)窗體所對(duì)應(yīng)的“菜單”,這樣,呈現(xiàn)給用戶的兩個(gè)“菜單”就是不一樣的,同樣道理,如果該操作被多核瀏覽器的主框架接收后并進(jìn)行處理,呈現(xiàn)給用戶的“菜單”和前兩個(gè)就都是不一樣的。而采用本發(fā)明的技術(shù)方案,所有消息均由主框架進(jìn)行處理,相應(yīng)的,也就只要開發(fā)一個(gè)“菜單”,不管用戶單擊鼠標(biāo)“右鍵”的操作被那個(gè)窗口接收到,均會(huì)將該消息傳遞給主框架,由主框架對(duì)應(yīng)的處理程序進(jìn)行處理,顯示給用戶的“菜單”也就是只有一個(gè)。圖3表示本發(fā)明實(shí)施例二所述的多核瀏覽器下的消息傳遞方法的主要流程圖;本實(shí)施例為多核瀏覽器的IE render核截獲了消息的情形。參見圖3所示,多核瀏覽器下的消息傳遞方法包括S201 IE render 的 UI 線程截獲消息;
S202 :通過IE render的IO線程發(fā)給主框架browser ;S203 Browser的IO線程收到該消息后,提供給Browser的UI線程進(jìn)行處理。具體而言,操作系統(tǒng)會(huì)監(jiān)控計(jì)算機(jī)上的鍵盤和鼠標(biāo)等輸入設(shè)備,為每一個(gè)輸入事件(由用戶操作所引發(fā),比如用戶按了某個(gè)鍵)生成一個(gè)消息。根據(jù)事件發(fā)生時(shí)的情況(比如當(dāng)前激活的窗體負(fù)責(zé)接收用戶按鍵,而依據(jù)用戶點(diǎn)擊鼠標(biāo)的坐標(biāo)可以知道用戶在哪個(gè)窗體區(qū)域內(nèi)點(diǎn)擊了鼠標(biāo)),操作系統(tǒng)會(huì)確定出此消息應(yīng)該發(fā)給哪個(gè)窗體對(duì)象。這些生成的消息會(huì)統(tǒng)一地先臨時(shí)放置在一個(gè)“系統(tǒng)消息隊(duì)列(system message queue) ”中,然后,操作系統(tǒng)有一個(gè)專門的線程負(fù)責(zé)從這一隊(duì)列中取出消息,根據(jù)消息的目標(biāo)對(duì)象(就是窗體的句柄),將其移動(dòng)到創(chuàng)建它的Π線程所對(duì)應(yīng)的消息隊(duì)列中。操作系統(tǒng)在創(chuàng)建進(jìn)程和線程時(shí),都同時(shí)記錄了大量的控制信息(比如通過進(jìn)程控制塊和句柄表可以查找到進(jìn)程所創(chuàng)建的所有線程和引用的核心對(duì)象),因此,根據(jù)窗體句柄來確定此消息應(yīng)屬于哪個(gè)Π線程,在步驟S201中,在根據(jù)上述描述確定該消息屬于IE render進(jìn)程的UI線程時(shí),可以通過IE render進(jìn)程的IO線程發(fā)給主框體Browser的UI線程。IE render的IO線程收到該消息,并提供給IE render的IO線程,并由IE render的IO線程傳遞給IE render的UI線程進(jìn)行處理。圖4表示本發(fā)明實(shí)施例所述的多核瀏覽器下的消息傳遞裝置的主要結(jié)構(gòu)示意圖。參見圖4所示,多核瀏覽器下的消息傳遞裝置包括傳遞模塊40,用于多核瀏覽器將獲取到的消息傳遞給所述多核瀏覽器的主框架,由所述主框架所對(duì)應(yīng)的處理程序?qū)λ鱿⑦M(jìn)行處理。優(yōu)選地,傳遞模塊40包括獲取模塊41,用于所述多核瀏覽器的任一核所對(duì)應(yīng)的UI線程獲取到所述消息;發(fā)送模塊43,用于所述任一核所對(duì)應(yīng)的Π線程將所述消息通過所述任一核所對(duì)應(yīng)的IO線程發(fā)送給所述主框架;接收模塊45,用于所述主框架的IO線程接收所述消息并將所述消息傳遞給所述主框架的UI線程。根據(jù)本發(fā)明的上述技術(shù)方案,由多核瀏覽器的主框架對(duì)接收到的消息進(jìn)行統(tǒng)一的處理,避免各個(gè)核獨(dú)自處理,從開發(fā)的角度,節(jié)省了開發(fā)時(shí)間,從用戶的角度,由主框架統(tǒng)一處理用戶輸入的消息,并統(tǒng)一呈現(xiàn)處理結(jié)果,提高了用戶的用戶體驗(yàn)。
權(quán)利要求
1.一種多核瀏覽器下的消息傳遞方法,其特征在于,包括 多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。
2.如權(quán)利要求I所述的消息傳遞方法,其特征在于,所述多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理包括 所述多核瀏覽器的任一核所對(duì)應(yīng)的Π線程獲取到所述消息; 所述任一核所對(duì)應(yīng)的UI線程將所述消息通過所述任一核所對(duì)應(yīng)的IO線程發(fā)送給所述主框架; 所述主框架的IO線程接收所述消息并將所述消息傳遞給所述主框架的UI線程。
3.一種多核瀏覽器下的消息傳遞裝置,其特征在于,包括 傳遞模塊,用于多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,并由所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。
4.如權(quán)利要求3所述的消息傳遞裝置,其特征在于,所述傳遞模塊包括 獲取模塊,用于所述多核瀏覽器的任一核所對(duì)應(yīng)的UI線程獲取到所述消息; 發(fā)送模塊,用于所述任一核所對(duì)應(yīng)的UI線程將所述消息通過所述任一核所對(duì)應(yīng)的IO線程發(fā)送給所述主框架; 接收模塊,用于所述主框架的IO線程接收所述消息并將所述消息傳遞給所述主框架的Π線程。
全文摘要
本發(fā)明提供一種多核瀏覽器下的消息傳遞方法與裝置,用于解決多核瀏覽器下每一個(gè)核所對(duì)應(yīng)的窗口均對(duì)接收的消息進(jìn)行處理的問題。該多核瀏覽器下的消息傳遞方法包括多核瀏覽器的任一核將獲取到的消息傳遞給所述多核瀏覽器的主框架,通過所述主框架的處理程序?qū)λ鱿⑦M(jìn)行處理。本發(fā)明的技術(shù)方案的有益效果為由多核瀏覽器的主框架對(duì)接收到的消息進(jìn)行統(tǒng)一的處理,避免各個(gè)核獨(dú)自處理,從開發(fā)的角度,節(jié)省了開發(fā)時(shí)間,從用戶的角度,由主框架統(tǒng)一處理用戶輸入的消息,并統(tǒng)一呈現(xiàn)處理結(jié)果,提高了用戶的用戶體驗(yàn)。
文檔編號(hào)G06F15/163GK102915256SQ201210059928
公開日2013年2月6日 申請(qǐng)日期2012年3月8日 優(yōu)先權(quán)日2012年3月8日
發(fā)明者石淼磊, 徐鳴, 孫明焱 申請(qǐng)人:北京金山安全軟件有限公司, 可牛網(wǎng)絡(luò)技術(shù)(北京)有限公司, 貝殼網(wǎng)際(北京)安全技術(shù)有限公司