本技術屬于通信,尤其涉及一種數(shù)據(jù)處理方法、裝置、設備、存儲介質及車輛。
背景技術:
1、在通信技術領域,通常使用以太網和傳輸控制協(xié)議/網際協(xié)議(transmissioncontrol?protocol/internet?protocol,tcp/ip)協(xié)議棧進行數(shù)據(jù)傳輸。汽車開放系統(tǒng)架構(automotive?open?system?architecture,autosar)的上層應用可以對tcp/ip協(xié)議棧傳輸?shù)臄?shù)據(jù)進行處理,以實現(xiàn)相應的功能。通常,套接字適配層(socket?adaptor,soad)可以位于tcp/ip協(xié)議棧與autosar的上層應用之間,用于緩存tcp/ip協(xié)議棧發(fā)送的數(shù)據(jù),以及在上層應用需要對數(shù)據(jù)進行處理的情況下,向上層應用傳輸數(shù)據(jù)。為了緩存數(shù)據(jù),可以在soad中創(chuàng)建環(huán)形緩存隊列。在傳輸數(shù)據(jù)時,soad需要向上層應用提供環(huán)形緩存隊列中待發(fā)送數(shù)據(jù)的地址sendptr和大小length。若待發(fā)送的數(shù)據(jù)跨越環(huán)形緩存隊列的隊尾,則上層應用不能根據(jù)sendptr和length獲取到需要的數(shù)據(jù)。
2、為了使上層應用能夠成功獲取到需要的數(shù)據(jù),現(xiàn)有技術中通常通過兩次拷貝將待發(fā)送的數(shù)據(jù)全部拷貝至臨時緩存區(qū),以確保sendptr和length的有效性。但是,上述數(shù)據(jù)處理的方式會降低數(shù)據(jù)的傳輸效率。
技術實現(xiàn)思路
1、本技術實施例提供了一種數(shù)據(jù)處理方法、裝置、設備、存儲介質及車輛,能夠提高數(shù)據(jù)的傳輸效率。
2、第一方面,本技術實施例提供了一種數(shù)據(jù)處理方法,該方法包括:
3、在目標環(huán)形緩存隊列中確定待發(fā)送數(shù)據(jù)的緩存區(qū)域,所述目標環(huán)形緩存隊列為多個首尾相連的環(huán)形緩存隊列中的任意一個;
4、在所述待發(fā)送數(shù)據(jù)跨越所述目標環(huán)形緩存隊列的隊尾的情況下,在所述緩存區(qū)域中確定與所述待發(fā)送數(shù)據(jù)對應的緩存子區(qū)域,所述緩存子區(qū)域包括所述目標環(huán)形緩存隊列的隊首緩存區(qū)域和隊尾緩存區(qū)域中的任意一個;
5、查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域,所述鄰居環(huán)形緩存隊列為所述多個首尾相連的環(huán)形緩存隊列中與所述目標環(huán)形緩存隊列相鄰的環(huán)形緩存隊列;
6、在存在所述空閑緩存區(qū)域,且所述空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述緩存子區(qū)域對應的數(shù)據(jù)量的情況下,將所述緩存子區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述空閑緩存區(qū)域。
7、在一種可能的實現(xiàn)方式中,所述查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域之前,所述方法還包括:
8、確定所述隊首緩存區(qū)域對應的數(shù)據(jù)量與所述隊尾緩存區(qū)域對應的數(shù)據(jù)量之間的大小關系;
9、所述查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域,包括:
10、在所述隊首緩存區(qū)域對應的數(shù)據(jù)量小于所述隊尾緩存區(qū)域對應的數(shù)據(jù)量的情況下,查詢第一鄰居環(huán)形緩存隊列中是否存在與所述隊首緩存區(qū)域對應的隊首空閑緩存區(qū)域,所述第一鄰居環(huán)形緩存隊列的隊首與所述目標環(huán)形緩存隊列的隊尾相連;
11、在所述隊首緩存區(qū)域對應的數(shù)據(jù)量不小于所述隊尾緩存區(qū)域對應的數(shù)據(jù)量的情況下,查詢第二鄰居環(huán)形緩存隊列中是否存在與所述隊尾緩存區(qū)域對應的隊尾空閑緩存區(qū)域,所述第二鄰居環(huán)形緩存隊列的隊尾與所述目標環(huán)形緩存隊列的隊首相連。
12、在一種可能的實現(xiàn)方式中,所述查詢第一鄰居環(huán)形緩存隊列中是否存在與所述隊首緩存區(qū)域對應的隊首空閑緩存區(qū)域之后,所述方法還包括:
13、在不存在所述隊首空閑緩存區(qū)域,或,存在所述隊首空閑緩存區(qū)域且所述隊首空閑緩存區(qū)域對應的數(shù)據(jù)量小于所述隊首緩存區(qū)域對應的數(shù)據(jù)量的情況下,查詢所述第二鄰居環(huán)形緩存隊列中是否存在所述隊尾空閑緩存區(qū)域;
14、所述在存在所述空閑緩存區(qū)域,且所述空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述緩存子區(qū)域對應的數(shù)據(jù)量的情況下,將所述緩存子區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述空閑緩存區(qū)域,包括:
15、在存在所述隊尾空閑緩存區(qū)域,且所述隊尾空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述隊尾緩存區(qū)域對應的數(shù)據(jù)量的情況下,將所述隊尾緩存區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述隊尾空閑緩存區(qū)域。
16、在一種可能的實現(xiàn)方式中,所述查詢第二鄰居環(huán)形緩存隊列中是否存在與所述隊尾緩存區(qū)域對應的隊尾空閑緩存區(qū)域之后,所述方法還包括:
17、在不存在所述隊尾空閑緩存區(qū)域,或,存在所述隊尾空閑緩存區(qū)域且所述隊尾空閑緩存區(qū)域對應的數(shù)據(jù)量小于所述隊尾緩存區(qū)域對應的數(shù)據(jù)量的情況下,查詢所述第一鄰居環(huán)形緩存隊列中是否存在所述隊首空閑緩存區(qū)域;
18、所述在存在所述空閑緩存區(qū)域,且所述空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述緩存子區(qū)域對應的數(shù)據(jù)量的情況下,將所述緩存子區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述空閑緩存區(qū)域,還包括:
19、在所述隊首空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述隊首緩存區(qū)域對應的數(shù)據(jù)量的情況下,將所述隊首緩存區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述隊首空閑緩存區(qū)域。
20、在一種可能的實現(xiàn)方式中,所述在目標環(huán)形緩存隊列中確定待發(fā)送數(shù)據(jù)的緩存區(qū)域之前,所述方法還包括:
21、以數(shù)組的形式保存與所述多個環(huán)形緩存隊列分別對應的緩存控制結構,所述緩存控制結構中包括所述緩存控制結構在所述數(shù)組中的索引位置;
22、所述查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域之前,所述方法還包括:
23、在與所述目標環(huán)形緩存隊列對應的目標緩存控制結構的索引位置為index的情況下,獲取所述數(shù)組中索引位置為index-1和/或index+1的鄰居緩存控制結構;
24、確定與所述鄰居緩存控制結構對應的環(huán)形緩存隊列為所述鄰居環(huán)形緩存隊列。
25、在一種可能的實現(xiàn)方式中,所述緩存控制結構還包括隊首位置和所述環(huán)形緩存隊列的長度,所述查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域之前,所述方法還包括:
26、獲取與所述目標環(huán)形緩存隊列對應的目標隊首位置和目標長度;
27、將所述目標隊首位置向后移動所述目標長度,確定與所述目標環(huán)形緩存隊列對應的第一鄰居環(huán)形緩存隊列的隊首位置,所述第一鄰居環(huán)形緩存隊列的隊首與所述目標環(huán)形緩存隊列的隊尾相連;
28、將所述目標隊首位置向前移動所述目標長度,確定與所述目標環(huán)形緩存隊列對應的第二鄰居環(huán)形緩存隊列的隊首位置,所述第二鄰居環(huán)形緩存隊列的隊尾與所述目標環(huán)形緩存隊列的隊首相連。
29、在一種可能的實現(xiàn)方式中,所述緩存控制結構還包括空閑緩存起始位置和緩存數(shù)據(jù)起始位置,所述查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域,包括:
30、獲取與所述鄰居緩存隊列對應的所述空閑緩存起始位置和所述緩存數(shù)據(jù)起始位置;
31、在所述空閑緩存起始位置對應的數(shù)值不小于所述緩存數(shù)據(jù)起始位置對應的數(shù)值的情況下,確定所述鄰居環(huán)形緩存隊列中存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域。
32、第二方面,本技術實施例提供了一種數(shù)據(jù)處理裝置,該裝置包括:
33、第一確定模塊,用于在目標環(huán)形緩存隊列中確定待發(fā)送數(shù)據(jù)的緩存區(qū)域,所述目標環(huán)形緩存隊列為多個首尾相連的環(huán)形緩存隊列中的任意一個;
34、第二確定模塊,用于在所述待發(fā)送數(shù)據(jù)跨越所述目標環(huán)形緩存隊列的隊尾的情況下,在所述緩存區(qū)域中確定與所述待發(fā)送數(shù)據(jù)對應的緩存子區(qū)域,所述緩存子區(qū)域包括所述目標環(huán)形緩存隊列的隊首緩存區(qū)域和隊尾緩存區(qū)域中的任意一個;
35、查詢模塊,用于查詢鄰居環(huán)形緩存隊列中是否存在與所述緩存子區(qū)域對應的空閑緩存區(qū)域,所述鄰居環(huán)形緩存隊列為所述多個首尾相連的環(huán)形緩存隊列中與所述目標環(huán)形緩存隊列相鄰的環(huán)形緩存隊列;
36、拷貝模塊,用于在存在所述空閑緩存區(qū)域,且所述空閑緩存區(qū)域對應的數(shù)據(jù)量不小于所述緩存子區(qū)域對應的數(shù)據(jù)量的情況下,將所述緩存子區(qū)域中的所述待發(fā)送數(shù)據(jù)拷貝至所述空閑緩存區(qū)域。
37、第三方面,本技術實施例提供了一種電子設備,該電子設備包括:處理器以及存儲有計算機程序指令的存儲器;
38、所述處理器執(zhí)行所述計算機程序指令時實現(xiàn)上述第一方面中任一種可能的實現(xiàn)方法中的方法。
39、第四方面,本技術實施例提供了一種計算機可讀存儲介質,該計算機可讀存儲介質上存儲有計算機程序指令,計算機程序指令被處理器執(zhí)行時實現(xiàn)上述第一方面中任一種可能的實現(xiàn)方法中的方法。
40、第五方面,本技術實施例提供了一種車輛,該車輛包括以下至少一項:
41、如第二方面的任一項實施例中的數(shù)據(jù)處理裝置;
42、如第三方面的任一項實施例中的電子設備;
43、如第四方面的任一項實施例中的計算機可讀存儲介質。
44、在本技術實施例的數(shù)據(jù)處理方法、裝置、設備、存儲介質及車輛中,由于鄰居環(huán)形緩存隊列與目標環(huán)形緩存隊列相鄰,因此,通過在鄰居環(huán)形緩存隊列中存在與緩存子區(qū)域對應的空閑緩存區(qū)域,且空閑緩存區(qū)域對應的數(shù)據(jù)量不小于緩存子區(qū)域對應的數(shù)據(jù)量的情況下,將緩存子區(qū)域中的待發(fā)送數(shù)據(jù)拷貝至與緩存子區(qū)域對應的空閑緩存區(qū)域,能夠確保sendptr和length的有效性。由于緩存子區(qū)域包括目標環(huán)形緩存隊列的隊首緩存區(qū)域和隊尾緩存區(qū)域中的任意一個,也即,拷貝的只是隊首緩存區(qū)域中的待發(fā)送數(shù)據(jù)或隊尾緩存區(qū)域中的待發(fā)送數(shù)據(jù),因此,能夠減少拷貝次數(shù)和數(shù)據(jù)拷貝量,從而能夠提高數(shù)據(jù)的傳輸效率。