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