数据传输方法、装置、存储介质以及电子设备与流程
未命名
09-13
阅读:62
评论:0

1.本技术涉及信息处理技术领域,尤其涉及一种数据传输方法、装置、存储介质以及电子设备。
背景技术:
2.随着科学技术的发展,电子设备也越来越多地出现在人们的日常生活中,人们可以通过电子设备运行应用程序,以实现相关功能。
3.应用程序可以认为是内存中运行的进程,每个进程都有自己独立的一块内存空间,一个进程中可以启动一个或者多个线程,在某些编程语言或者系统中,线程与线程之间往往只能传输基本类型的数据,导致线程与线程之间数据传输的易用性较差。
技术实现要素:
4.本技术提供一种数据传输方法、装置、存储介质以及电子设备,可以解决相关技术中线程与线程之间数据传输的易用性较差的技术问题。
5.第一方面,本技术实施例提供一种数据传输方法,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,该方法包括:
6.第一线程接收并响应数据传输指令,确定所述数据传输指令对应的数据接收方为第二线程,以及获取所述数据传输指令对应的传输数据;
7.第一线程判断所述传输数据的数据类型,若确定所述传输数据为第二数据类型,则将所述传输数据转换为第一数据类型的数据,其中所述第二数据类型与所述第一数据类型不同;
8.所述第一线程将转换后的所述传输数据发送至所述第二线程,以使得所述第二线程对转换后的所述传输数据进行处理。
9.可选地,所述将所述传输数据转换为第一数据类型的数据,包括:所述第一线程基于所述第一数据类型对所述传输数据进行序列化,以使得序列化后的所述传输数据的数据类型为所述第一数据类型。
10.可选地,所述第一线程基于所述第一数据类型对所述传输数据进行序列化,包括:所述第一线程确定与第二线程之间的预设通信协议,并按照所述预设通信协议对所述传输数据进行包装得到第一协议内容;所述第一线程基于所述第一数据类型对所述第一协议内容进行序列化。
11.可选地,所述按照所述预设通信协议对所述传输数据进行包装得到第一协议内容,包括:所述第一线程对所述传输数据进行标记得到第一标记数据,以及将所述第一标记数据保存至所述第一线程对应的引用记录池;所述第一线程按照预设通信协议对所述第一标记数据进行包装得到第一协议内容。
12.可选地,所述第一线程将转换后的所述传输数据发送至所述第二线程之后,还包括:所述第一线程接收所述第二线程发送的代理化数据,并对所述代理化数据进行处理;其
中,所述代理化数据为所述第二线程将所述传输数据反转换为第二数据类型的数据之后,对所述传输数据执行代理化处理得到代理化数据,以及在确定所述代理化数据为第二数据类型时,将所述代理化数据转换为第一数据类型的数据之后发送给所述第一线程的数据。
13.可选地,所述对所述代理化数据进行处理,包括:所述第一线程对所述代理化数据进行反序列化得到第二协议内容;所述第一线程基于所述预设通信协议对所述第二协议内容进行解析得到第二标记数据;所述第一线程基于所述第二标记数据对所述引用记录池中的所述第一标记数据进行处理。
14.可选地,所述第一线程将转换后的所述传输数据发送至所述第二线程之后,还包括:所述第一线程根据所述第一线程与所述第二线程是否在同一进程内,确定所述第一线程对应的垃圾回收机制。
15.第二方面,本技术实施例提供一种数据传输装置,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,该装置包括:
16.响应模块,用于接收并响应数据传输指令,确定所述数据传输指令对应的数据接收方为第二线程,以及获取所述数据传输指令对应的传输数据;
17.转换模块,用于判断所述传输数据的数据类型,若确定所述传输数据为第二数据类型,则将所述传输数据转换为第一数据类型的数据,其中所述第二数据类型与所述第一数据类型不同;
18.发送模块,用于将转换后的所述传输数据发送至所述第二线程,以使得所述第二线程对转换后的所述传输数据进行处理。
19.第三方面,本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行实现上述的方法的步骤。
20.第四方面,本技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
21.本技术一些实施例提供的技术方案带来的有益效果至少包括:
22.本技术提供一种数据传输方法,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据;第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。当第一线程确定传输数据为第二数据类型之后,可以将传输数据转换为第一数据类型的数据,由于各线程之间本身具备传输第一数据类型的数据的能力,那么线程之间可以直接传输转换后的传输数据,增加了线程之间数据传输的范围,提升了线程与线程之间数据传输的易用性。
附图说明
23.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。
24.图1为本技术实施例提供的一种数据传输方法的示例性系统架构图;
25.图2为本技术实施例提供的一种数据传输方法的系统交互图;
26.图3为本技术实施例提供的一种数据传输方法的流程示意图;
27.图4为本技术另一实施例提供的一种数据传输方法的流程示意图;
28.图5为本技术另一实施例提供的一种数据传输方法的数据流向示意图;
29.图6为本技术另一实施例提供的一种数据传输装置的结构示意图;
30.图7为本技术实施例提供了一种电子设备的结构示意图。
具体实施方式
31.为使得本技术的特征和优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
32.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
33.图1为本技术实施例提供的一种数据传输方法的示例性系统架构图。
34.如图1所示,系统架构可以包括电子设备101、网络102和服务器103。网络102用于在电子设备101和服务器103之间提供通信链路的介质。网络102 可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真 (wireless-fidelity,wi-fi)通信链路或微波通信链路等。
35.电子设备101可以通过网络102与服务器103交互,以接收来自服务器103 的消息或向服务器103发送消息。电子设备101可以是硬件,也可以是软件。当电子设备101为硬件时,可以是各种电子设备,包括但不限于智能手表、智能手机、平板电脑、膝上型便携式计算机和台式计算机等。当电子设备101为软件时,可以是安装在上述所列举的电子设备中,其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
36.服务器103可以是提供各种服务的业务服务器。需要说明的是,服务器103 可以是硬件,也可以是软件。当服务器103为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器103为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
37.应理解,图1中的电子设备、网络以及服务器的数目仅是示意性的,根据实现需要,可以是任意数量的电子设备、网络以及服务器。
38.请参阅图2,图2为本技术实施例提供的一种数据传输方法的系统交互图,可以理解的,在本技术实施例中,执行主体可以电子设备或者电子设备中的处理器,还可以是电子设备中执行数据传输方法的线程,为方便描述下面以电子设备中执行数据传输方法的线程
为例,结合图1和图2介绍一种数据传输方法中系统交互过程。
39.s201、第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据。
40.s202、第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同。
41.可选地,将传输数据转换为第一数据类型的数据,包括:第一线程基于第一数据类型对传输数据进行序列化,以使得序列化后的传输数据的数据类型为第一数据类型。
42.可选地,第一线程基于第一数据类型对传输数据进行序列化,包括:第一线程确定与第二线程之间的预设通信协议,并按照预设通信协议对传输数据进行包装得到第一协议内容;第一线程基于第一数据类型对第一协议内容进行序列化。
43.可选地,按照预设通信协议对传输数据进行包装得到第一协议内容,包括:第一线程对传输数据进行标记得到第一标记数据,以及将第一标记数据保存至第一线程对应的引用记录池;第一线程按照预设通信协议对第一标记数据进行包装得到第一协议内容。
44.s203、第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。
45.s204、第二线程将传输数据反转换为第二数据类型的数据之后,对传输数据执行代理化处理得到代理化数据,以及在确定代理化数据为第二数据类型时,将代理化数据转换为第一数据类型的数据之后发送给第一线程。
46.s205、第一线程接收第二线程发送的代理化数据,并对代理化数据进行处理。
47.可选地,对代理化数据进行处理,包括:第一线程对代理化数据进行反序列化得到第二协议内容;第一线程基于预设通信协议对第二协议内容进行解析得到第二标记数据;第一线程基于第二标记数据对引用记录池中的第一标记数据进行处理。
48.可选地,第一线程将转换后的传输数据发送至第二线程之后,还包括:第一线程根据第一线程与第二线程是否在同一进程内,确定第一线程对应的垃圾回收机制。
49.在本技术实施例中,一种数据传输方法,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据;第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。当第一线程确定传输数据为第二数据类型之后,可以将传输数据转换为第一数据类型的数据,由于各线程之间本身具备传输第一数据类型的数据的能力,那么线程之间可以直接传输转换后的传输数据,增加了线程之间数据传输的范围,提升了线程与线程之间数据传输的易用性。
50.请参阅图3,图3为本技术实施例提供的一种数据传输方法的流程示意图。
51.如图3所示,该方法包括:
52.s301、第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据。
53.可以理解的,本技术实施例中提供的数据传输方法,应用于线程之间的数据传输,对于电子设备来说,线程有别于进程,进程是指一个电子设备的内存中运行的应用程序,每
个进程都有自己独立的一块内存空间,即进程空间或(虚空间),进程可以独立存在,一个进程中可以启动多个线程。比如在windows 系统中,一个运行的exe文件就是一个进程。因此线程是指进程中的一个执行流程,一个进程中可以运行多个线程,比如java.exe进程中可以运行很多线程,线程总是属于某个进程,线程没有自己的虚拟地址空间,与进程内的其他线程一起共享分配给该进程的所有资源。
54.在本技术实施例中,对线程的类型可以不做限定,为方便描述下面,以下面以本技术实施例中的线程是javascript线程为例介绍数据传输方法的具体实施过程。进一步地,本技术在实施数据传输之前,线程与线程之间应该最基本的数据传输能力,也即线程与线程之间可以传输至少一种数据类型的数据,例如,当第一线程和第二线程为javascript线程时,对于javascript线程之间其具备传输文本类型的数据,在本技术实施例中将线程与线程之间可以传输的至少一种数据类型确定为第一数据类型,因此在本技术实施例中,各线程之间可以具备传输第一数据类型的数据的能力。
55.当线程与线程之间需要进行数据传输时,各线程之间至少具有一个数据发送方,在本技术实施例中数据发送方也即第一线程,同时第一线程会接收到代表数据传输需求的数据传输指令,由于各线程之间进行数据传输时还至少具有一个数据接收方,那么第一线程可以响应该数据传输指令,确定数据传输指令对应的数据接收方对应的线程为第二线程,其中第一线程与第二线程的数量可以不做限定,并且第一线程与第二线程可以是处于同一进程中的不同线程,例如,第一线程与第二线程处于同一电子设备的同一进程中;另外第一线程与第二线程还可以是处于不同进程中的不同线程,例如,第一线程处于第一电子设备中的某一进程,第二线程处于第二电子设备或者服务器中的某一进程。另外,在线程与线程之间需要进行数据传输时,第一线程还获取传输数据也即需要待传输的目标数据,以便于后续进行传输。
56.s302、第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同。
57.在获取传输数据之后,第一线程还可以判断传输数据的数据类型。在本技术实施例中,传输数据的数据类型可以至少分成第一数据类型以及第二数据类型,其中第一数据类型也即第一线程与第二线程之间可以直接进行传输的数据类型,第二数据类型为不同于第一数据类型之外的一种或者多种数据类型。例如,当第一线程和第二线程为javascript线程时,对于javascript线程来说,第一数据类型可以是文本数据类型(基本数据类型),具体可以是字符串等;第二数据类型可以是引用数据类型,具体可以是数字、布尔值、函数、数组以及对象(特殊的对象,例如:promise对象、uintarray对象)等。
58.当第一线程确定传输数据为第二数据类型时,由于第一线程和第二线程之间不能直接传输第二数据类型的数据,因此需要第一线程对第二数据类型的传输数据进行转换,以使得第二数据类型的传输数据经过转换后成为第一数据类型的数据,以便于后续第一线程与第二线程之间进行数据传输。其中,在本技术实施例中,将传输数据转换为第一数据类型的数据的方法可以不做限定。
59.s303、第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。
60.当第一线程将传输数据转换为第一数据类型的数据之后,由于第一线程和第二线
程之间本身就可以传输第一数据类型的数据,因此第一线程可以直接将将转换后的传输数据发送至第二线程,以使得第二线程接收转换后的传输数据,并对转换后的传输数据进行处理。
61.可以理解的,当第一线程确定传输数据为第一数据类型之后,可以不需要对传输数据进行转换,并直接将传输数据发送至第二线程。
62.在本技术实施例中,一种数据传输方法,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据;第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。当第一线程确定传输数据为第二数据类型之后,可以将传输数据转换为第一数据类型的数据,由于各线程之间本身具备传输第一数据类型的数据的能力,那么线程之间可以直接传输转换后的传输数据,增加了线程之间数据传输的范围,提升了线程与线程之间数据传输的易用性。
63.请参阅图4,图4为本技术另一实施例提供的一种数据传输方法的流程示意图。
64.如图4所示,该方法包括:
65.s401、第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据。
66.关于步骤s401,请参阅步骤s301中的描述,此处不在赘述。
67.s402、第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,第一线程基于第一数据类型对传输数据进行序列化,以使得序列化后的传输数据的数据类型为第一数据类型。
68.当第一线程判断传输数据的数据类型,并确定传输数据为第二数据类型之后,由于第一线程和第二线程之间不能直接传输第二数据类型的数据,因此需要第一线程对第二数据类型的传输数据进行转换,以使得第二数据类型的传输数据经过转换后成为第一数据类型的数据,以便于后续第一线程与第二线程之间进行数据传输。一种可行的实施方式是,第一线程基于第一数据类型对传输数据进行序列化,以使得序列化后的传输数据的数据类型为第一数据类型。
69.其中,对传输数据进行序列化,也即对传输数据进行重新编码,那么基于第一数据类型对传输数据进行序列化,也即按照第一数据类型对应的编码方式,将传输数据重新进行编码,以使得重新编码后的传输数据的编码方式与第一数据类型的编码方式相同。
70.例如,当第一线程和第二线程为javascript线程时,对于javascript线程来说,第一数据类型可以是文本数据类型,其对应的编码方式可以是gbk编码方式或者utf-8编码方式,那么可以gbk编码方式或者utf-8编码方式对传输数据进行序列化。
71.可以理解的,第一线程在基于第一数据类型对传输数据进行序列化的过程中,如果直接对第二数据类型的传输数据进行序列化,那么对于一些函数数据类型或者对象数据类型的传输数据进行序列化,以及第二线程接收到序列化后的传输数据并对传输数据反序列化之后,那么第二线程不能快速确定反序列化后的传输数据具体指代什么,给第二线程对传输数据的处理带来困难。
72.为了解决上述技术问题,一种可行的实施方式是,第一线程在基于第一数据类型对传输数据进行序列化的过程中,第一线程确定与第二线程之间的预设通信协议,并按照预设通信协议对传输数据进行包装得到第一协议内容,其中预设通信协议是指第一线程和第二线程之间提前约定好的协议,第一线程或者第二线程都可以基于预设通信协议对数据进行包装以及对数据进行解析。可选地,第一线程可以通过协议包装器基于预设通信协议对传输数据进行包装。
73.因此第一线程在得到包装之后的第一协议内容之后,可以对第一协议内容进行序列化,那么后续第二线程接收到序列化后的传输数据并对传输数据反序列化之后,第二线程可以根据预设通信协议快速确定反序列化后的传输数据具体指代什么,给第二线程对传输数据的处理带来便利。
74.进一步地,第一线程在对传输数据进行包装之前,还可以对传输数据进行标记,也即第一线程对传输数据进行标记得到第一标记数据,其中对传输数据进行标记的具体方式可以不做限定,以及将第一标记数据保存至第一线程对应的引用记录池,引用记录池可以认为是第一线程对应的一个存储区域,例如可以是运行内存中的某一区域,那么将第一标记数据保存至引用记录池之后,相当于保存了传输数据发送到第二线程之前的状态,一方面,第一标记数据也携带有第一线程的相关信息以及传输数据的相关信息,后续第二线程可以通过第一标记数据得到第一线程的相关信息以及传输数据的相关信息,便于对传输数据进行处理;另一方面当第一线程接收到第二线程对传输数据的处理后数据之后,可以基于处理后的数据的标记数据以及引用记录池中的标记数据,快速查找到处理后的数据对应的第一线程发送到第二线程之前的传输数据,以及基于处理后的数据对第一线程发送到第二线程之前的传输数据进行处理,也即第一线程和第二线程可以相互获取或者调用任意数据,进而实现了第一线程和第二线程之间的内存共享模拟的效果。
75.那么第一线程对传输数据进行标记得到第一标记数据之后,那么可以按照预设通信协议对第一标记数据进行包装得到第一协议内容。
76.s403、第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。
77.可选地,第一线程在对传输数据进行转换之后,可以基于协议发送器将转换后的传输数据发送至第二线程,第二线程可以使用协议接收器接收该转换后的传输数据。
78.可以理解的,当第一线程将转换后传输数据发送到第二线程之后,第二线程会对转换后的传输数据进行处理,具体的,由于第一线程是对传输数据进行的转换,因此第二线程可以先对接收到的进行转换之后的传输数据进行反转换,也即先对传输数据进行反序列化得到第一协议内容,然后第二线程确定与第一线程之间的预设通信协议,并基于协议解析器按照预设通信协议对第一协议内容进行解析得到第一标记数据,由于第一标记数据也携带有第一线程的相关信息以及传输数据的相关信息,那么最后第二线程根据第一标记数据确定传输数据对应的第二数据类型的数据,也就得到了第一线程在对传输数据转换之前的第二数据类型的原始数据,也可以确定发送传输数据对应的第一线程的信息。
79.第二线程得到原始的传输数据之后,第二线程可以对传输数据进行处理,具体的,第二线程可以使用线程的代理模式,也即第二线程对传输数据对应的第二数据类型的数据执行代理化处理得到代理化数据,第二线程可能也需要将代理化数据返回至第一线程,其
中代理化数据按照数据类型也可以分成第一数据类型以及第二数据类型,与第一线程处理传输数据类似,第二线程也可以根据代理化数据的数据类型,选择是否对代理化数据进行转换后传输还是直接对代理化数据进行传输。
80.因此第二线程若确定代理化数据为第二数据类型,则将代理化数据转换为第一数据类型的数据,具体地,第二线程可以先对代理化数据进行标记得到第二标记数据,并将第二标记数据保存至第二线程对应的引用记录池,与第一线程将第一标记数据保存至第一线程对应的应用记录池类似,那么第二线程将第二标记数据保存至引用记录池之后,相当于保存了代理化数据发送到第一线程之前的状态,一方面,第二标记数据也携带有第二线程的相关信息以及代理化数据的相关信息,后续第一线程可以通过第二标记数据得到第二线程的相关信息以及代理化数据的相关信息,便于对代理化数据进行处理;另一方面,当第一线程接收到第二线程对传输数据的处理后的代理化数据之后,可以基于代理化数据的第二标记数据以及引用记录池中的标记数据,快速查找到处理后的数据对应的第一线程发送到第二线程之前的传输数据,以及基于代理化数据的第二标记数据对第一线程发送到第二线程之前的传输数据进行处理,也即第一线程和第二线程可以相互获取或者调用任意数据,进而实现了第一线程和第二线程之间的内存共享模拟的效果。
81.进一步地,那么第二线程对代理化数据进行标记得到第二标记数据之后,第二线程可以确定与第一线程之间的预设通信协议,第二线程也可以按照预设通信协议对第二标记数据进行包装得到第二协议内容,第二线程在得到第二协议内容之后,也可以对第二协议内容进行序列化,以使得序列化后的第二协议内容也即代理化数据的数据类型为第一数据类型,最终实现第二线程对代理化数据的转换,并且第二线程将转换后的代理化数据发送至第一线程。
82.例如,若传输数据的数据类型具体为函数,那么函数在第二线程中执行的时候,实则是向第一线程发送对应的函数标记,由于函数需要传递参数,参数类型也包括第一数据类型(基本数据类型)和第二数据类型(引用数据类型),第二数据类型的传递也需要在第二线程中进行标识和包装,再传递给第一线程,为了实现第一线程和第二线程之间的内存共享模拟,所以第二线程中也存在应用记录池。
83.s404、第一线程接收第二线程发送的代理化数据,并对代理化数据进行处理。
84.当第一线程接收到第二线程返回的代理化数据之后,由于代理化数据是第二线程基于第一线程发送的传输数据生成的,因此第一线程可以对根据需要对代理化数据进行处理。
85.具体的,当第一线程对代理化数据进行处理时,第一线程处理代理化数据的过程与第二线程处理传输数据的过程类似,也即第一线程先对代理化数据进行反序列化得到第二协议内容,然后第一线程基于预设通信协议对第二协议内容进行解析得到第二标记数据,由于第二标记数据也携带有第二线程的相关信息以及代理化数据的相关信息,那么最后第一线程基于第二标记数据对引用记录池中的第一标记数据进行处理,也即第一线程根据第二标记数据确定代理化数据对应的第二数据类型的数据,也就得到了第二线程在对代理化数据转换之前的第二数据类型的原始数据,也可以确定发送传输数据对应的第二线程的信息,那么基于第二线程的相关信息,可以在引用记录池中查找到第一线程发送到第二线程的第一标记数据,那么基于第一标记数据可以确定原始的传输数据,那么就可以基于
代理化数据的相关信息对原始的传输数据进行处理,从而实现内存共享模拟效果。
86.s405、第一线程根据第一线程与第二线程是否在同一进程内,确定第一线程对应的垃圾回收机制。
87.可选地,当第一线程与第二线程进行数据传输的过程中,会产生相应的数据垃圾,例如,当第二线程被清理之后,那么第一线程不能继续与第二线程进行数据传输,那么第一线程对应的引用记录池中存储的标记数据可以认为是数据垃圾,那么此时第一线程根据第一线程与第二线程是否在同一进程内,确定第一线程对应的垃圾回收机制,也即第一线程与第二线程在同一进程内对应的垃圾回收机制,与第一线程与第二线程不在同一进程内对应的垃圾回收机制不同。
88.例如,当第一线程确定与第二线程在同一进程内时,第一线程可以持续监测第二线程的运行状态,若监测到第二线程被清除,那么可以立即将第一线程对应的引用记录池中关于第二线程的标记数据删除,以实现第一线程的垃圾回收;再例如,当第一线程确定与第二线程不在同一进程内时,由于不能直接对第二线程的运行状态进行监测,那么可以第一线程可以每隔预设时间与第二线程进行握手,以判断第二线程是否被清除,具体可以是,当握手等待时间超过预设时间阈值,那么就可以判断第二线程被清除,此时可以将第一线程对应的引用记录池中关于第二线程的标记数据删除,以实现第一线程的垃圾回收。
89.同样的,对于第二线程可以与第一线程采用类似的垃圾回收机制,也即第二线程根据第二线程与第一线程是否在同一进程内,确定第二线程对应的垃圾回收机制。
90.请参阅图5,图5为本技术另一实施例提供的一种数据传输方法的数据流向示意图。
91.如图5所示,第一线程将待传输的传输数据作为共享的内存,然后通过协议包装器对传输数据进行标记得到第一标记数据,并将第一标记数据保存至第一线程对应的引用记录池,第一线程还可以通过协议包装器按照预设通信协议对第一标记数据进行包装得到第一协议内容,协议包装器将第一协议内容发送至协议发送器,第一线程基于协议发送器以及第一数据类型对第一协议内容进行序列化,以使得序列化后的第一协议内容也即传输数据的数据类型为第一数据类型,最后协议发送器将传输数据以第一数据类型的形式发送给第二线程。
92.对于第二线程来说,第二线程可以基于协议接收器接收第一线程发送的传输数据,并且第二线程会先基于协议接收器对传输数据进行反序列化得到第一协议内容,然后第二线程确定与第一线程之间的预设通信协议,并基于协议解析器按照预设通信协议对第一协议内容进行解析得到第一标记数据,以及对第一标记数据对应的传输数据进行代理化处理,并得到代理化数据,那么第一标记数据对应第二线程来说就是从第一线程引用的内存,代理化数据可以看作是对第一线程中传输数据的引用之后的处理结果,也即实现了第一线程和第二线程之间的内存共享模拟的效果。
93.第二线程若确定代理化数据为第二数据类型,则将代理化数据转换为第一数据类型的数据,具体地,第二线程可以先基于协议包装器对代理化数据进行标记得到第二标记数据,并将第二标记数据保存至第二线程对应的引用记录池,第二线程对代理化数据进行标记得到第二标记数据之后,第二线程可以确定与第一线程之间的预设通信协议,第二线程也可以基于协议包装器按照预设通信协议对第二标记数据进行包装得到第二协议内容,
第二线程在得到第二协议内容之后,也可以对第二协议内容进行序列化,以使得序列化后的第二协议内容也即代理化数据的数据类型为第一数据类型,最终实现第二线程对代理化数据的转换,并且第二线程将转换后的代理化数据发送至第一线程。
94.在本技术实施例中,当第一线程接收到第二线程对传输数据的处理后的代理化数据之后,可以基于代理化数据的第二标记数据以及引用记录池中的标记数据,快速查找到处理后的数据对应的第一线程发送到第二线程之前的传输数据,以及基于代理化数据的第二标记数据对第一线程发送到第二线程之前的传输数据进行处理,也即第一线程和第二线程可以相互获取或者调用任意数据,进而实现了第一线程和第二线程之间的内存共享模拟的效果。解决了以往线程之间通信的低易用性和通信嵌套的复杂逻辑问题,通过模拟线程之间的内存共享,加入契合单线程的异步化,一定程度上提高了线程之间通信的易用性,除此之外可适用于多种平台和场景使用,兼容性高。
95.请参阅图6,图6为本技术另一实施例提供的一种数据传输装置的结构示意图。
96.如图6所示,数据传输装置600应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,数据传输装置600包括:
97.响应模块610,用于接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据。
98.转换模块620,用于判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同。
99.发送模块630,用于将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。
100.可选地,转换模块620还用于基于第一数据类型对传输数据进行序列化,以使得序列化后的传输数据的数据类型为第一数据类型。
101.可选地,转换模块620还用于确定与第二线程之间的预设通信协议,并按照预设通信协议对传输数据进行包装得到第一协议内容;基于第一数据类型对第一协议内容进行序列化。
102.可选地,转换模块620还用于对传输数据进行标记得到第一标记数据,以及将第一标记数据保存至对应的引用记录池;按照预设通信协议对第一标记数据进行包装得到第一协议内容。
103.可选地,数据传输装置600还包括处理模块,用于接收第二线程发送的代理化数据,并对代理化数据进行处理;其中,代理化数据为第二线程将传输数据反转换为第二数据类型的数据之后,对传输数据执行代理化处理得到代理化数据,以及在确定代理化数据为第二数据类型时,将代理化数据转换为第一数据类型的数据之后发送的数据。
104.可选地,处理模块,还用于对代理化数据进行反序列化得到第二协议内容;基于预设通信协议对第二协议内容进行解析得到第二标记数据;基于第二标记数据对引用记录池中的第一标记数据进行处理。
105.可选地,数据传输装置600还包括垃圾回收模块,用于根据与第二线程是否在同一进程内,确定对应的垃圾回收机制。
106.在本技术实施例中,一种数据传输装置,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,数据传输装置包括:响应模块,用于接收并响应数
据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据;转换模块,用于判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;发送模块,用于将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。当确定传输数据为第二数据类型之后,可以将传输数据转换为第一数据类型的数据,由于各线程之间本身具备传输第一数据类型的数据的能力,那么线程之间可以直接传输转换后的传输数据,增加了线程之间数据传输的范围,提升了线程与线程之间数据传输的易用性。
107.本技术实施例还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行如上述实施例中的任一项的方法的步骤。
108.进一步地,请参见图7,图7为本技术实施例提供了一种电子设备的结构示意图。如图7所示,电子设备700可以包括:至少一个中央处理器701,至少一个网络接口704,用户接口703,存储器705,至少一个通信总线702。
109.其中,通信总线702用于实现这些组件之间的连接通信。
110.其中,用户接口703可以包括显示屏(display)、摄像头(camera),可选用户接口703还可以包括标准的有线接口、无线接口。
111.其中,网络接口704可选的可以包括标准的有线接口、无线接口(如wi-fi 接口)。
112.其中,中央处理器701可以包括一个或者多个处理核心。中央处理器701 利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器705内的指令、程序、代码集或指令集,以及调用存储在存储器705 内的数据,执行电子设备700的各种功能和处理数据。可选的,中央处理器701 可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列 (field-programmable gate array,fpga)、可编程逻辑阵列(programmable logicarray,pla)中的至少一种硬件形式来实现。中央处理器701可集成中央处理器(central processing unit,cpu)、图像中央处理器(graphics processingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器701中,单独通过一块芯片进行实现。
113.其中,存储器705可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器705包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器705可用于存储指令、程序、代码、代码集或指令集。存储器705可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器705可选的还可以是至少一个位于远离前述中央处理器701的存储装置。如图7所示,作为一种计算机存储介质的存储器705 中可以包括操作系统、网络通信模块、用户接口模块以及数据传输程序。
114.在图7所示的电子设备700中,用户接口703主要用于为用户提供输入的接口,获取用户输入的数据;而中央处理器701可以用于调用存储器705中存储的数据传输程序,并具
体执行以下操作:
115.第一线程接收并响应数据传输指令,确定数据传输指令对应的数据接收方为第二线程,以及获取数据传输指令对应的传输数据;第一线程判断传输数据的数据类型,若确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。
116.可选地,将传输数据转换为第一数据类型的数据,包括:第一线程基于第一数据类型对传输数据进行序列化,以使得序列化后的传输数据的数据类型为第一数据类型。
117.可选地,第一线程基于第一数据类型对传输数据进行序列化,包括:第一线程确定与第二线程之间的预设通信协议,并按照预设通信协议对传输数据进行包装得到第一协议内容;第一线程基于第一数据类型对第一协议内容进行序列化。
118.可选地,按照预设通信协议对传输数据进行包装得到第一协议内容,包括:第一线程对传输数据进行标记得到第一标记数据,以及将第一标记数据保存至第一线程对应的引用记录池;第一线程按照预设通信协议对第一标记数据进行包装得到第一协议内容。
119.可选地,第一线程将转换后的传输数据发送至第二线程之后,还包括:第一线程接收第二线程发送的代理化数据,并对代理化数据进行处理;其中,代理化数据为第二线程将传输数据反转换为第二数据类型的数据之后,对传输数据执行代理化处理得到代理化数据,以及在确定代理化数据为第二数据类型时,将代理化数据转换为第一数据类型的数据之后发送给第一线程的数据。
120.可选地,对代理化数据进行处理,包括:第一线程对代理化数据进行反序列化得到第二协议内容;第一线程基于预设通信协议对第二协议内容进行解析得到第二标记数据;第一线程基于第二标记数据对引用记录池中的第一标记数据进行处理。
121.可选地,第一线程将转换后的传输数据发送至第二线程之后,还包括:第一线程根据第一线程与第二线程是否在同一进程内,确定第一线程对应的垃圾回收机制。
122.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
123.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
124.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
125.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现
出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
126.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
127.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
128.以上为对本技术所提供的一种数据传输方法、装置、存储介质以及电子设备的描述,对于本领域的技术人员,依据本技术实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种数据传输方法,其特征在于,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,所述方法包括:第一线程接收并响应数据传输指令,确定所述数据传输指令对应的数据接收方为第二线程,以及获取所述数据传输指令对应的传输数据;第一线程判断所述传输数据的数据类型,若确定所述传输数据为第二数据类型,则将所述传输数据转换为第一数据类型的数据,其中所述第二数据类型与所述第一数据类型不同;所述第一线程将转换后的所述传输数据发送至所述第二线程,以使得所述第二线程对转换后的所述传输数据进行处理。2.根据权利要求1所述的方法,其特征在于,所述将所述传输数据转换为第一数据类型的数据,包括:所述第一线程基于所述第一数据类型对所述传输数据进行序列化,以使得序列化后的所述传输数据的数据类型为所述第一数据类型。3.根据权利要求2所述的方法,其特征在于,所述第一线程基于所述第一数据类型对所述传输数据进行序列化,包括:所述第一线程确定与第二线程之间的预设通信协议,并按照所述预设通信协议对所述传输数据进行包装得到第一协议内容;所述第一线程基于所述第一数据类型对所述第一协议内容进行序列化。4.根据权利要求3所述的方法,其特征在于,所述按照所述预设通信协议对所述传输数据进行包装得到第一协议内容,包括:所述第一线程对所述传输数据进行标记得到第一标记数据,以及将所述第一标记数据保存至所述第一线程对应的引用记录池;所述第一线程按照预设通信协议对所述第一标记数据进行包装得到第一协议内容。5.根据权利要求4所述的方法,其特征在于,所述第一线程将转换后的所述传输数据发送至所述第二线程之后,还包括:所述第一线程接收所述第二线程发送的代理化数据,并对所述代理化数据进行处理;其中,所述代理化数据为所述第二线程将所述传输数据反转换为第二数据类型的数据之后,对所述传输数据执行代理化处理得到代理化数据,以及在确定所述代理化数据为第二数据类型时,将所述代理化数据转换为第一数据类型的数据之后发送给所述第一线程的数据。6.根据权利要求5所述的方法,其特征在于,所述对所述代理化数据进行处理,包括:所述第一线程对所述代理化数据进行反序列化得到第二协议内容;所述第一线程基于所述预设通信协议对所述第二协议内容进行解析得到第二标记数据;所述第一线程基于所述第二标记数据对所述引用记录池中的所述第一标记数据进行处理。7.根据权利要求1所述的方法,其特征在于,所述第一线程将转换后的所述传输数据发送至所述第二线程之后,还包括:所述第一线程根据所述第一线程与所述第二线程是否在同一进程内,确定所述第一线
程对应的垃圾回收机制。8.一种数据传输装置,其特征在于,应用于线程之间的数据传输,且各线程之间具备传输第一数据类型的数据的能力,所述装置包括:响应模块,用于接收并响应数据传输指令,确定所述数据传输指令对应的数据接收方为第二线程,以及获取所述数据传输指令对应的传输数据;转换模块,用于判断所述传输数据的数据类型,若确定所述传输数据为第二数据类型,则将所述传输数据转换为第一数据类型的数据,其中所述第二数据类型与所述第一数据类型不同;发送模块,用于将转换后的所述传输数据发送至所述第二线程,以使得所述第二线程对转换后的所述传输数据进行处理。9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的所述方法的步骤。10.一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1~7所述方法的步骤。
技术总结
本申请公开了一种数据传输方法、装置、存储介质以及电子设备,涉及信息处理技术领域。第一线程接收并响应数据传输指令,并确定传输数据为第二数据类型,则将传输数据转换为第一数据类型的数据,其中第二数据类型与第一数据类型不同;第一线程将转换后的传输数据发送至第二线程,以使得第二线程对转换后的传输数据进行处理。当第一线程确定传输数据为第二数据类型之后,可以将传输数据转换为第一数据类型的数据,由于各线程之间本身具备传输第一数据类型的数据的能力,那么线程之间可以直接传输转换后的传输数据,增加了线程之间数据传输的范围,提升了线程与线程之间数据传输的易用性。性。性。
技术研发人员:周泽润
受保护的技术使用者:广州视臻信息科技有限公司
技术研发日:2022.03.03
技术公布日:2023/9/11
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/