本公開(kāi)涉及通信技術(shù)領(lǐng)域,尤其涉及一種消息傳輸方法和裝置。
背景技術(shù):
在通信技術(shù)發(fā)展的過(guò)程中,主機(jī)與外部設(shè)備之間的通信是由UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)來(lái)實(shí)現(xiàn)串行數(shù)據(jù)和并行數(shù)據(jù)之間的轉(zhuǎn)換。這種轉(zhuǎn)換方式的實(shí)現(xiàn)是通過(guò)將消息存入FIFO(First Input First Output,先入先出)隊(duì)列來(lái)實(shí)現(xiàn)的,消息的發(fā)送順序僅根據(jù)消息存入FIFO隊(duì)列的先后順序,并未考慮消息本身的重要程度,當(dāng)攜帶有重要信息的消息進(jìn)入FIFO隊(duì)列后,需要等待此前存入FIFO隊(duì)列里的消息發(fā)送完畢才能進(jìn)行發(fā)送,導(dǎo)致重要消息不能被及時(shí)發(fā)送。
技術(shù)實(shí)現(xiàn)要素:
本公開(kāi)提供一種消息傳輸方法和裝置,用以解決傳統(tǒng)消息傳輸未考慮消息的重要程度,導(dǎo)致重要消息不能被及時(shí)發(fā)送的問(wèn)題。
為了實(shí)現(xiàn)上述目的,根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種消息傳輸方法,所述方法包括:
獲取應(yīng)用發(fā)送的第一消息,所述第一消息中包括所述第一消息的優(yōu)先級(jí);
將所述第一消息存入發(fā)送隊(duì)列,并記錄所述第一消息的優(yōu)先級(jí)以及屬性參數(shù);其中,存入所述第一消息后的所述發(fā)送隊(duì)列中包括一條或多條待發(fā)送消息,以及每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù);
根據(jù)所述發(fā)送隊(duì)列中的每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值;
將所述發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器。
可選的,所述每條待發(fā)送消息的屬性參數(shù)包括:所述每條待發(fā)送消息消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,所述根據(jù)所述發(fā)送隊(duì)列中的每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,包括:
根據(jù)所述每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
可選的,所述根據(jù)所述每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,包括:
a.根據(jù)所述發(fā)送隊(duì)列中的第n條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用所述傳輸優(yōu)先級(jí)權(quán)值算法獲取所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值;
b.將所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與前n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值進(jìn)行比較;
c.將所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與所述最大值二者中較大的一者作為前n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值;其中,n為正整數(shù),且2≤n≤N,N為發(fā)送隊(duì)列中當(dāng)前的待發(fā)送消息的總數(shù);
將n的值加1后再次執(zhí)行步驟a至步驟c,直至獲取所述發(fā)送隊(duì)列中的N條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。
可選的,所述傳輸優(yōu)先級(jí)權(quán)值算法包括:
W=P*a+(T–Tst)*b+Lmsg
其中,W表示待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,P表示待發(fā)送消息的優(yōu)先級(jí),T表示當(dāng)前時(shí)間,Tst表示待發(fā)送消息存入所述發(fā)送隊(duì)列的時(shí)間戳,Lmsg表示待發(fā)送消息的消息長(zhǎng)度,a表示優(yōu)先級(jí)權(quán)重,b表示時(shí)間偏移(T–Tst)的權(quán)重。
可選的,所述將所述發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器,包括:
從所述發(fā)送隊(duì)列中獲取與所述傳輸優(yōu)先級(jí)權(quán)值的最大值對(duì)應(yīng)的所述第二消息;
將所述第二消息發(fā)送至所述目標(biāo)處理器。
根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種消息傳輸裝置,所述裝置包括:消息獲取模塊、消息存儲(chǔ)模塊、權(quán)值獲取模塊和發(fā)送模塊;
所述消息獲取模塊,用于獲取應(yīng)用發(fā)送的第一消息,所述第一消息中包括所述第一消息的優(yōu)先級(jí);
所述消息存儲(chǔ)模塊,用于將所述第一消息存入發(fā)送隊(duì)列,并記錄所述第一消息的優(yōu)先級(jí)以及屬性參數(shù);其中,存入所述第一消息后的所述發(fā)送隊(duì)列中包括一條或多條待發(fā)送消息,以及每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù);
所述權(quán)值獲取模塊,用于根據(jù)所述發(fā)送隊(duì)列中的每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值;
所述發(fā)送模塊,用于將所述發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器。
可選的,所述每條待發(fā)送消息的屬性參數(shù)包括:所述每條待發(fā)送消息的消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,所述權(quán)值獲取模塊用于:
根據(jù)所述每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取所述每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
可選的,所述權(quán)值獲取模塊包括:權(quán)值獲取子模塊、比較子模塊和最值獲取子模塊;
所述權(quán)值獲取子模塊,用于根據(jù)所述發(fā)送隊(duì)列中的第n條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用所述傳輸優(yōu)先級(jí)權(quán)值算法獲取所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值;
所述比較子模塊,用于將所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與前n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值進(jìn)行比較;
所述最值獲取子模塊,用于將所述第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與所述最大值二者中較大的一者作為前n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值;其中,n為正整數(shù),且2≤n≤N,N為發(fā)送隊(duì)列中當(dāng)前的待發(fā)送消息的總數(shù);
將n的值加1后再次執(zhí)行所述權(quán)值獲取子模塊、所述比較子模塊和所述最值獲取子模塊所執(zhí)行的步驟,直至獲取所述發(fā)送隊(duì)列中的N條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。
可選的,所述傳輸優(yōu)先級(jí)權(quán)值算法包括:
W=P*a+(T–Tst)*b+Lmsg
其中,W表示待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,P表示待發(fā)送消息的優(yōu)先級(jí),T表示當(dāng)前時(shí)間,Tst表示待發(fā)送消息存入所述發(fā)送隊(duì)列的時(shí)間戳,Lmsg表示待發(fā)送消息的消息長(zhǎng)度,a表示優(yōu)先級(jí)權(quán)重,b表示時(shí)間偏移(T–Tst)的權(quán)重。
可選的,所述發(fā)送模塊包括:第二消息獲取子模塊和第二消息發(fā)送子模塊;
所述第二消息獲取子模塊,用于從所述發(fā)送隊(duì)列中獲取與所述傳輸優(yōu)先級(jí)權(quán)值的最大值對(duì)應(yīng)的所述第二消息;
所述第二消息發(fā)送子模塊,用于將所述第二消息發(fā)送至所述目標(biāo)處理器。
通過(guò)上述技術(shù)方案,本公開(kāi)利用消息的優(yōu)先級(jí)和屬性參數(shù),根據(jù)消息的傳輸優(yōu)先級(jí)權(quán)值來(lái)決定消息的發(fā)送順序,綜合考慮了消息的重要程度和消息存入隊(duì)列的時(shí)間,能夠解決傳統(tǒng)消息傳輸未考慮消息的重要程度的問(wèn)題,導(dǎo)致重要消息不能被及時(shí)發(fā)送的問(wèn)題,具有能夠根據(jù)消息的重要程度靈活調(diào)整消息發(fā)送順序,保證重要消息能夠被及時(shí)發(fā)送的效果。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本公開(kāi)的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本公開(kāi),但并不構(gòu)成對(duì)本公開(kāi)的限制。在附圖中:
圖1是根據(jù)一示例性實(shí)施例示出的一種消息傳輸方法的流程圖;
圖2是根據(jù)一示例性實(shí)施例示出的另一種消息傳輸方法的流程圖;
圖3是根據(jù)一示例性實(shí)施例示出的又一種消息傳輸方法的流程圖;
圖4是根據(jù)一示例性實(shí)施例示出的一種消息傳輸裝置的框圖;
圖5是根據(jù)一示例性實(shí)施例示出的另一種消息傳輸裝置的框圖;
圖6是根據(jù)一示例性實(shí)施例示出的又一種消息傳輸裝置的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
在介紹本公開(kāi)提供的消息傳輸方法和裝置之前,首先對(duì)本公開(kāi)各個(gè)實(shí)施例所涉及應(yīng)用場(chǎng)景進(jìn)行介紹。本公開(kāi)主要涉及在源處理器和目標(biāo)處理器之間的通信,其中源處理器在處理數(shù)據(jù)時(shí)是并行數(shù)據(jù),而目標(biāo)處理器能夠處理接收的是串行數(shù)據(jù),因此在發(fā)送數(shù)據(jù)前需要利用特定的電路、設(shè)備或芯片來(lái)實(shí)現(xiàn)并行數(shù)據(jù)和串行數(shù)據(jù)之間的轉(zhuǎn)換。因此本公開(kāi)各個(gè)實(shí)施例所涉及的應(yīng)用場(chǎng)景為:將由源處理器上運(yùn)行的應(yīng)用發(fā)送的消息存入發(fā)送隊(duì)列,以預(yù)設(shè)的方式處理隊(duì)列中的消息,從隊(duì)列中選出當(dāng)前最先發(fā)送的消息,并以串行的方式發(fā)送到目標(biāo)處理器。其中,本公開(kāi)以通用異步收發(fā)傳輸器UART為例,對(duì)示例性實(shí)施例進(jìn)行說(shuō)明。
圖1是根據(jù)一示例性實(shí)施例示出的一種消息傳輸方法的流程圖,如圖1所示,該方法包括:
步驟101,獲取應(yīng)用發(fā)送的第一消息,第一消息中包括第一消息的優(yōu)先級(jí)。
示例的,按照UART預(yù)設(shè)的傳輸協(xié)議,源處理器通過(guò)串口通訊上層接口的從應(yīng)用獲取的第一消息的幀結(jié)構(gòu)可以如表1所示,消息中包括了:起始位(STX,Start of Text)、優(yōu)先級(jí)(priority)、數(shù)據(jù)長(zhǎng)度(len)、數(shù)據(jù)(data)和校驗(yàn)和(checksum),起始位表示該第一消息的開(kāi)始,優(yōu)先級(jí)表示該第一消息中的數(shù)據(jù)所包含業(yè)務(wù)信息的重要程度,數(shù)據(jù)長(zhǎng)度表示該第一消息中包含的數(shù)據(jù)的位數(shù),數(shù)據(jù)表示該第一消息中包含的數(shù)據(jù)信息,校驗(yàn)和用來(lái)判斷該第一消息在傳輸過(guò)程中是否出錯(cuò),如果出現(xiàn)差錯(cuò),可以按照系統(tǒng)設(shè)定的協(xié)議處理出錯(cuò)的信息。需要說(shuō)明的是,該應(yīng)用是指在系統(tǒng)中運(yùn)行的應(yīng)用程序、后臺(tái)服務(wù)或進(jìn)程。該第一消息為當(dāng)前時(shí)刻,應(yīng)用發(fā)送的消息??梢愿鶕?jù)系統(tǒng)的通信需要和消息的業(yè)務(wù)類型,設(shè)置一個(gè)優(yōu)先級(jí)策略,給系統(tǒng)中的每一種消息排列一個(gè)先后順序,依次賦值。例如將系統(tǒng)中的消息分為10個(gè)等級(jí),安全告警類的消息涉及系統(tǒng)的安全,重要性最高,設(shè)置優(yōu)先級(jí)為10,心跳類消息能夠保證系統(tǒng)時(shí)間的同步,較為重要,設(shè)置優(yōu)先級(jí)為8等。也可以根據(jù)系統(tǒng)在運(yùn)行過(guò)程中的狀態(tài),實(shí)時(shí)調(diào)整優(yōu)先級(jí)的賦值,例如,當(dāng)CPU(中央處理器Central Processing Unit)使用率過(guò)高時(shí),降低一些重要性較低消息的優(yōu)先級(jí),讓CPU能夠優(yōu)先處理緊急的消息,當(dāng)CPU使用率低時(shí),提高提示類消息,讓CPU能夠充分發(fā)揮功能。
表1
步驟102,將第一消息存入發(fā)送隊(duì)列,并記錄第一消息的優(yōu)先級(jí)以及屬性參數(shù);其中,存入第一消息后的發(fā)送隊(duì)列中包括一條或多條待發(fā)送消息,以及每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)。其中,每條待發(fā)送消息的屬性參數(shù)包括:每條待發(fā)送消息的消息長(zhǎng)度以及存入發(fā)送隊(duì)列的時(shí)間戳。需要說(shuō)明的是,每條待發(fā)送消息的消息長(zhǎng)度為該消息的總位(bit)數(shù),包含了起始位、優(yōu)先級(jí)、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)和校驗(yàn)和的總長(zhǎng)度,而存入發(fā)送隊(duì)列的時(shí)間戳為待發(fā)送消息存入發(fā)送隊(duì)列的時(shí)刻。
以第一消息為例,步驟102的過(guò)程,在收到第一消息后,需要先將第一消息中包含的優(yōu)先級(jí)以及屬性參數(shù)解析出來(lái),和第一消息一同存入發(fā)送隊(duì)列。該第一消息的屬性參數(shù)可以包括第一消息的消息長(zhǎng)度以及存入發(fā)送隊(duì)列的時(shí)間戳,其中該消息長(zhǎng)度可以為第一消息的位數(shù)。存入第一消息后的發(fā)送隊(duì)列中至少包括一條待發(fā)送消息。
步驟103,根據(jù)發(fā)送隊(duì)列中的每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
示例的,步驟103可以由源處理器上的發(fā)送daemon來(lái)完成,該發(fā)送daemon是后臺(tái)用于處理發(fā)送消息相關(guān)任務(wù)的服務(wù)進(jìn)程。
可選的,可以根據(jù)每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
步驟104,將發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器。
示例的,對(duì)步驟103獲取的每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值進(jìn)行排序,找到傳輸優(yōu)先級(jí)權(quán)值最大的第二消息,該第二消息可能是發(fā)送隊(duì)列中的任一條消息。然后,通過(guò)發(fā)送daemon將第二消息通過(guò)串口接口發(fā)送至目標(biāo)處理器。可以利用插入排序、冒泡排序或二叉樹(shù)排序等方法,將傳輸優(yōu)先級(jí)權(quán)值進(jìn)行排序。
圖2是根據(jù)一示例性實(shí)施例示出的另一種消息傳輸方法的流程圖,如圖2所示,步驟103中所述的根據(jù)每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,包括:
步驟1031,根據(jù)發(fā)送隊(duì)列中的第n條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入發(fā)送隊(duì)列的時(shí)間戳,利用傳輸優(yōu)先級(jí)權(quán)值算法獲取第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
步驟1032,將第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與前n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值進(jìn)行比較。
其中,前n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值是在上一次進(jìn)行步驟1013至1033時(shí),將第n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,以及前n-2條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值進(jìn)行比較后確定的,以此類推,這樣,經(jīng)過(guò)多次判斷即可獲取傳輸優(yōu)先級(jí)權(quán)值的最大值。并且可以在判斷傳輸優(yōu)先級(jí)權(quán)值的最值過(guò)程中,每判斷出第n條和前n-1條待發(fā)送消息中傳輸優(yōu)先級(jí)權(quán)值的最大值時(shí),記錄該最大值。示例的,可以存儲(chǔ)該最大值,同時(shí)記錄該最大值對(duì)應(yīng)的消息,以便之后找到該最大值對(duì)應(yīng)的消息,還可以通過(guò)更新指針存儲(chǔ)的地址來(lái)標(biāo)記該最大值,該指針用于指向該最大值在該發(fā)送隊(duì)列中位置,以便之后找到發(fā)送隊(duì)列中該最大值對(duì)應(yīng)的消息。
步驟1033,將第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與最大值二者中較大的一者作為前n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。
其中,n為正整數(shù),且2≤n≤N,N為發(fā)送隊(duì)列中當(dāng)前的待發(fā)送消息的總數(shù)。
在步驟1033執(zhí)行完之后將n的值加1后再次執(zhí)行步驟1031至步驟1033,直至獲取發(fā)送隊(duì)列中的N條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。
示例的,當(dāng)發(fā)送隊(duì)列中只有一條消息時(shí),即n=1時(shí),可以直接發(fā)送該消息;當(dāng)n=2時(shí),根據(jù)傳輸優(yōu)先級(jí)權(quán)值算法獲取第2條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,前n-1條待發(fā)送消息即為第1條待發(fā)送消息,將兩條消息的傳輸優(yōu)先級(jí)權(quán)值比較,將最大值及相對(duì)應(yīng)的消息放入緩存中。再判斷第3條消息,根據(jù)傳輸優(yōu)先級(jí)權(quán)值算法獲取第3條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,和上一次判斷出的第1條和第2條待發(fā)送消息中的傳輸優(yōu)先級(jí)權(quán)值最大的待發(fā)送消息比較,將最大值放入緩存中。依次執(zhí)行,直至將發(fā)送隊(duì)列中的消息全部比較完畢,即可獲取全部待發(fā)送消息中傳輸優(yōu)先級(jí)權(quán)值的最大值。
可選的,上述的傳輸優(yōu)先級(jí)權(quán)值算法包括:
W=P*a+(T–Tst)*b+Lmsg
其中,W表示待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,P表示待發(fā)送消息的優(yōu)先級(jí),T表示當(dāng)前時(shí)間,Tst表示待發(fā)送消息存入發(fā)送隊(duì)列的時(shí)間戳,Lmsg表示待發(fā)送消息的消息長(zhǎng)度,a表示優(yōu)先級(jí)權(quán)重,b表示時(shí)間偏移(T–Tst)的權(quán)重。
示例的,一條待發(fā)送消息,其優(yōu)先級(jí)P為8,時(shí)間偏移(T–Tst)為0.5,該消息的消息長(zhǎng)度Lmsg為64,優(yōu)先級(jí)權(quán)重a為100,時(shí)間偏移的權(quán)重b為30。則該消息的傳輸優(yōu)先級(jí)權(quán)值為879,該消息將優(yōu)先于傳輸優(yōu)先級(jí)權(quán)值小于879的消息發(fā)送。
圖3是根據(jù)一示例性實(shí)施例示出的又一種消息傳輸方法的流程圖,如圖3所示,步驟104所述的將發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器,包括:
步驟1041,從發(fā)送隊(duì)列中獲取與傳輸優(yōu)先級(jí)權(quán)值的最大值對(duì)應(yīng)的第二消息。
步驟1042,將第二消息發(fā)送至目標(biāo)處理器。
示例的,根據(jù)步驟103獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,在發(fā)送隊(duì)列中找到傳輸優(yōu)先級(jí)權(quán)值的最大值對(duì)應(yīng)的第二消息,并從發(fā)送隊(duì)列獲取該第二消息,然后將第二消息發(fā)送至目標(biāo)處理器。
綜上所述,本公開(kāi)利用消息的優(yōu)先級(jí)和屬性參數(shù),根據(jù)消息的傳輸優(yōu)先級(jí)權(quán)值來(lái)決定消息的發(fā)送順序,綜合考慮了消息的重要程度和消息存入隊(duì)列的時(shí)間,能夠解決傳統(tǒng)消息傳輸未考慮消息的重要程度的問(wèn)題,具有能夠根據(jù)消息的重要程度靈活調(diào)整消息發(fā)送順序,保證重要消息能夠被及時(shí)發(fā)送的效果。
圖4是根據(jù)一示例性實(shí)施例示出的一種消息傳輸裝置的框圖,如圖4所示,該裝置包括:消息獲取模塊401、消息存儲(chǔ)模塊402、權(quán)值獲取模塊403和發(fā)送模塊404;
消息獲取模塊401,用于獲取應(yīng)用發(fā)送的第一消息,第一消息中包括第一消息的優(yōu)先級(jí).
消息存儲(chǔ)模塊402,用于將第一消息存入發(fā)送隊(duì)列,并記錄第一消息的優(yōu)先級(jí)以及屬性參數(shù);其中,存入第一消息后的發(fā)送隊(duì)列中包括一條或多條待發(fā)送消息,以及每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)。
權(quán)值獲取模塊403,用于根據(jù)發(fā)送隊(duì)列中的每條待發(fā)送消息的優(yōu)先級(jí)以及屬性參數(shù)獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值;
發(fā)送模塊404,用于將發(fā)送隊(duì)列中傳輸優(yōu)先級(jí)權(quán)值最大的第二消息發(fā)送至目標(biāo)處理器。
其中,需要說(shuō)明的是,每條待發(fā)送消息的屬性參數(shù)包括:每條待發(fā)送消息的消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳。
可選的,權(quán)值獲取模塊403包括:
根據(jù)每條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入所述發(fā)送隊(duì)列的時(shí)間戳,利用預(yù)設(shè)的傳輸優(yōu)先級(jí)權(quán)值算法依次獲取每條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
圖5是根據(jù)一示例性實(shí)施例示出的另一種消息傳輸裝置的框圖,如圖5所示,權(quán)值獲取模塊403包括:權(quán)值獲取子模塊4031、比較子模塊4032和最值獲取子模塊4033;
權(quán)值獲取子模塊4031,用于根據(jù)發(fā)送隊(duì)列中的第n條待發(fā)送消息的優(yōu)先級(jí)、消息長(zhǎng)度以及存入發(fā)送隊(duì)列的時(shí)間戳,利用傳輸優(yōu)先級(jí)權(quán)值算法獲取第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值。
比較子模塊4032,用于將第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與前n-1條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值中的最大值進(jìn)行比較。
最值獲取子模塊4033,用于將第n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值與最大值二者中較大的一者作為前n條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。其中,n為正整數(shù),且2≤n≤N,N為發(fā)送隊(duì)列中當(dāng)前的待發(fā)送消息的總數(shù);
將n的值加1后再次執(zhí)行權(quán)值獲取子模塊4031、比較子模塊4032和最值獲取子模塊4033所執(zhí)行的步驟,直至獲取發(fā)送隊(duì)列中的N條待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值的最大值。
可選的,傳輸優(yōu)先級(jí)權(quán)值算法包括:
W=P*a+(T–Tst)*b+Lmsg
其中,W表示待發(fā)送消息的傳輸優(yōu)先級(jí)權(quán)值,P表示待發(fā)送消息的優(yōu)先級(jí),T表示當(dāng)前時(shí)間,Tst表示待發(fā)送消息存入發(fā)送隊(duì)列的時(shí)間戳,Lmsg表示待發(fā)送消息的消息長(zhǎng)度,a表示優(yōu)先級(jí)權(quán)重,b表示時(shí)間偏移(T–Tst)的權(quán)重。
圖6是根據(jù)一示例性實(shí)施例示出的又一種消息傳輸裝置的框圖,如圖6所示,發(fā)送模塊404包括:第二消息獲取子模塊4041和第二消息發(fā)送子模塊4042;
第二消息獲取子模塊4041,用于從發(fā)送隊(duì)列中獲取與傳輸優(yōu)先級(jí)權(quán)值的最大值對(duì)應(yīng)的第二消息;
第二消息發(fā)送子模塊4042,用于將第二消息發(fā)送至目標(biāo)處理器。
其中,上述各個(gè)模塊所實(shí)現(xiàn)功能的具體說(shuō)明已經(jīng)在上述方法實(shí)施例中進(jìn)行了詳細(xì)描述,此處不再贅述。
綜上所述,本公開(kāi)利用消息的優(yōu)先級(jí)和屬性參數(shù),根據(jù)消息的傳輸優(yōu)先級(jí)權(quán)值來(lái)決定消息的發(fā)送順序,綜合考慮了消息的重要程度和消息存入隊(duì)列的時(shí)間,能夠解決傳統(tǒng)消息傳輸未考慮消息的重要程度的問(wèn)題,具有能夠根據(jù)消息的重要程度靈活調(diào)整消息發(fā)送順序,保證重要消息能夠被及時(shí)發(fā)送的效果。
以上結(jié)合附圖詳細(xì)描述了本公開(kāi)的優(yōu)選實(shí)施方式,但是,本公開(kāi)并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本公開(kāi)的技術(shù)構(gòu)思范圍內(nèi),本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐本公開(kāi)后,容易想到本公開(kāi)的其它實(shí)施方案,均屬于本公開(kāi)的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合。同時(shí)本公開(kāi)的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本公開(kāi)的思想,其同樣應(yīng)當(dāng)視為本公開(kāi)所公開(kāi)的內(nèi)容。本公開(kāi)并不局限于上面已經(jīng)描述出的精確結(jié)構(gòu),本公開(kāi)的范圍僅由所附的權(quán)利要求來(lái)限制。