1.一種事件傳遞的方法,其特征在于,包括:
繼承觀察者模板類,得到觀察者類;所述觀察者模板類包括主線程觀察者模板類和工作線程觀察者模板類,繼承主線程觀察者模板類的觀察者類在主線程調用相應的被觀察事件,繼承工作線程觀察者模板類的觀察者類在工作線程調用相應的被觀察事件;
在所述觀察者類中重寫事件處理函數(shù);
創(chuàng)建觀察者鏈表;所述觀察者鏈表的ID與所述被觀察事件的ID相同;
添加與所述被觀察事件相關的觀察者類至所述觀察者鏈表;
將所述被觀察事件發(fā)送至事件隊列;所述事件隊列包括主線程事件隊列和工作線程事件隊列;
分發(fā)所述事件隊列中的所述被觀察事件給所述觀察者鏈表中的觀察者類;
所述事件處理函數(shù)處理所述被觀察事件。
2.根據(jù)權利要求1所述的事件傳遞的方法,其特征在于,將所述被觀察事件發(fā)送至事件隊列,具體為:
判斷所述被觀察事件是否需要在主線程處理;
若是,則將所述被觀察事件的實例發(fā)送至主線程事件隊列;否則,
將所述被觀察事件的實例發(fā)送至工作線程事件隊列。
3.根據(jù)權利要求1所述的事件傳遞的方法,其特征在于,將所述被觀察事件發(fā)送至事件隊列,具體為:
拷貝被觀察事件的實例,得到拷貝實例;
判斷所述被觀察事件是否需要在主線程處理;
若是,則將所述拷貝實例發(fā)送至主線程事件隊列;否則,
將所述拷貝實例發(fā)送至工作線程事件隊列。
4.根據(jù)權利要求1所述的事件傳遞的方法,其特征在于,分發(fā)所述事件隊列中的所述被觀察事件給所述觀察者鏈表中的觀察者類,具體為:
獲取所述主線程事件隊列中的被觀察事件的實例,得到第一事件實例;
獲取與所述第一事件實例相對應的觀察者鏈表,得到第一觀察者鏈表;
獲取第一觀察者鏈表中的觀察者類的實例,得到第一觀察者實例;
將所述第一事件實例發(fā)送給第一觀察者實例。
5.根據(jù)權利要求1所述的事件傳遞的方法,其特征在于,分發(fā)所述事件隊列中的所述被觀察事件給所述觀察者鏈表中的觀察者類,還包括:
獲取所述工作線程事件隊列中的被觀察事件的實例,得到第二事件實例;
獲取與所述第二事件實例相對應的觀察者鏈表,得到第二觀察者鏈表;
獲取第二觀察者鏈表中的觀察者類的實例,得到第二觀察者實例;
判斷工作線程是否處于空閑狀態(tài);
若是,則將所述第二事件實例發(fā)送給第二觀察者實例。
6.根據(jù)權利要求1所述的事件傳遞的方法,其特征在于,還包括:
撤銷綁定所述觀察者類與所述被觀察事件。
7.根據(jù)權利要求6所述的事件傳遞的方法,其特征在于,所述撤銷綁定所述觀察者類與所述被觀察事件,具體為:
將所述觀察者類從與所述被觀察事件相對應的觀察者鏈表中刪除。
8.一種事件傳遞的系統(tǒng),其特征在于,包括:
繼承模塊,用于繼承觀察者模板類,得到觀察者類;所述觀察者模板類包括主線程觀察者模板類和工作線程觀察者模板類,繼承主線程觀察者模板類的觀察者類在主線程調用相應的被觀察事件,繼承工作線程觀察者模板類的觀察者類在工作線程調用相應的被觀察事件;
重寫模塊,用于在所述觀察者類中重寫事件處理函數(shù);
創(chuàng)建模塊,用于創(chuàng)建觀察者鏈表;所述觀察者鏈表的ID與所述被觀察事件的ID相同;
添加模塊,用于添加與所述被觀察事件相關的觀察者類至所述觀察者鏈表;
發(fā)送模塊,用于將所述被觀察事件發(fā)送至事件隊列;所述事件隊列包括主線程事件隊列和工作線程事件隊列;
分發(fā)模塊,用于分發(fā)所述事件隊列中的所述被觀察事件給所述觀察者鏈表中的觀察者類;
處理模塊,用于所述事件處理函數(shù)處理所述被觀察事件。
9.根據(jù)權利要求8所述的事件傳遞的系統(tǒng),其特征在于,所述發(fā)送模塊包括:
拷貝單元,用于拷貝被觀察事件的實例,得到拷貝實例;
第一判斷單元,用于判斷所述被觀察事件是否需要在主線程處理;
第一發(fā)送單元,用于將所述拷貝實例發(fā)送至主線程事件隊列;
第二發(fā)送單元,用于將所述拷貝實例發(fā)送至工作線程事件隊列;
第三發(fā)送單元,用于將所述被觀察事件的實例發(fā)送至主線程事件隊列;
第四發(fā)送單元,用于將所述被觀察事件的實例發(fā)送至工作線程事件隊列。
10.根據(jù)權利要求8所述的事件傳遞的系統(tǒng),其特征在于,所述分發(fā)模塊包括:
第一獲取單元,用于獲取所述主線程事件隊列中的被觀察事件的實例,得到第一事件實例;
第二獲取單元,用于獲取與所述第一事件實例相對應的觀察者鏈表,得到第一觀察者鏈表;
第三獲取單元,用于獲取第一觀察者鏈表中的觀察者類的實例,得到第一觀察者實例;
第五發(fā)送單元,用于將所述第一事件實例發(fā)送給第一觀察者實例;
第四獲取單元,用于獲取所述工作線程事件隊列中的被觀察事件的實例,得到第二事件實例;
第五獲取單元,用于獲取與所述第二事件實例相對應的觀察者鏈表,得到第二觀察者鏈表;
第六獲取單元,用于獲取第二觀察者鏈表中的觀察者類的實例,得到第二觀察者實例;
第二判斷單元,用于判斷工作線程是否處于空閑狀態(tài);
第六發(fā)送單元,用于將所述第二事件實例發(fā)送給第二觀察者實例。