一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

文件接收方法、装置、存储介质以及终端与流程

2022-07-09 21:56:50 来源:中国专利 TAG:


1.本技术涉及信息处理技术领域,尤其涉及一种文件接收方法、装置、存储介质以及终端。


背景技术:

2.随着科学技术的发展,各种终端也越来越多地出现在人们的日常生活中,人们可以通过终端运行应用程序,以实现相关功能。
3.终端之间可以基于网络进行通信,而在网络数据传输通信的应用场景中,比较常见的是文件的发送、传输以及接收。


技术实现要素:

4.本技术实施例提供一种文件接收方法、装置、存储介质以及终端,可以解决相在网络数据传输通信的应用场景中,文件接收的技术问题。
5.第一方面,本技术实施例提供一种文件接收方法,所述方法包括:
6.创建缓存容器池、第一线程以及第二线程;
7.控制所述第一线程在接收到所述文件发送端发送的文件数据流时,将所述文件数据流保存至所述缓存容器池中;
8.控制所述第二线程基于所述缓存容器池中保存的所述文件数据流创建所述文件数据流对应的文件。
9.第二方面,本技术实施例提供一种文件接收装置,所述装置包括:
10.容器池创建模块,用于创建缓存容器池、第一线程以及第二线程;
11.缓存接收模块,用于控制所述第一线程在接收到所述文件发送端发送的文件数据流时,将所述文件数据流保存至所述缓存容器池中;
12.文件创建模块,用于控制所述第二线程基于所述缓存容器池中保存的所述文件数据流创建所述文件数据流对应的文件。
13.第三方面,本技术实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行实现上述的方法的步骤。
14.第四方面,本技术实施例提供一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的方法的步骤。
15.本技术一些实施例提供的技术方案带来的有益效果至少包括:
16.本技术实施例提供一种文件接收方法,通过创建缓存容器池、第一线程以及第二线程,那么在文件的接收过程中可以控制第一线程在接收到文件数据流时,将文件数据流保存至缓存容器池中,并且还可以控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。由于通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的
接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
附图说明
17.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1为相关技术中提供的一种文件接收方法的数据流向图;
19.图2为本技术实施例提供的一种文件接收方法的示例性系统架构图;
20.图3为本技术实施例提供的一种文件接收方法的流程示意图;
21.图4为本技术另一实施例提供的一种文件接收方法的流程示意图;
22.图5为本技术另一实施例提供的一种文件接收方法的数据流向示意图;
23.图6为本技术另一实施例提供的一种文件接收装置的结构示意图;
24.图7为本技术实施例提供了一种终端的结构示意图。
具体实施方式
25.为使得本技术的特征和优点能够更加的明显和易懂,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而非全部实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
26.下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
27.请参阅图1,图1为相关技术中提供的一种文件接收方法的示意图。如图1所示,在相关技术中,当数据发送端需要将某一个或者多个文件通过网络传输至数据接收端时,一方面,首先需要数据发送端与数据接收端建立通信连接,然后数据发送端读取需要发送的文件,并将各文件转换为文件数据流,以及将各文件数据流按数据预设编码格式写入数据发送端中的内核网卡驱动,网卡驱动再将各文件数据流通过预设传输协议传输到数据接收端的端口;另一方面,数据接收端会在数据发送端与数据接收端建立通信连接之前或者之后预先创建文件接收线程,并在通过文件接收线程监听到数据接收端的端口中存在来自数据发送端发送的文件数据流时,控制文件接收线程接收文件数据流,并创建文件数据流对应的文件,并在创建文件数据流对应的文件之后继续接收下一个文件数据流,并创建下一个文件数据流对应的文件,直到接收完所有的文件数据流,最后数据接收端断开与数据发送端之间的通信连接。
28.但是在上述相关技术中,由于在数据发送端中仅通过单独的文件接收线程去接收文件数据流,并在接收文件数据流之后还需要立即创建文件,而基于文件数据流线程创建文件会耗费较多的时间,那么在数据接收端接收文件的过程中,会导致文件接收线程会花
费大量的时间在创建文件的工作上,进而导致在面对高并发、大数据量、长时间文件传输时,文件接收线程的任务处理较为繁重。
29.进一步地,由于文件接收线程创建文件的过程是比较耗时的,而理想状态下,文件接收线程的任务应该着重放在监听并接收数据发送端发送的文件数据流的工作上,而不应该在其中工作上做过多耗时的操作,例如,如果在小文件比较多的场景下,文件接收线程每接收几个字节就创建一个小文件,使得文件接收线程花费较多时间在了创建文件上,则会大大拖慢文件接收线程接收文件的效率,而不是文件数据流的读取上,这会降低网络的吞吐性能,使得单位时间内接收到的实际文件数变少,降低了数据接收端文件接收速度。
30.基于上述相关技术中出现的问题,本技术提出一种文件接收方法,通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
31.请参阅图2,图2为本技术实施例提供的一种文件接收方法的示例性系统架构图。
32.如图2所示,系统架构可以包括终端201、网络202和服务器203。网络202用于在终端201和服务器203之间提供通信链路的介质。网络202可以包括各种类型的有线通信链路或无线通信链路,例如:有线通信链路包括光纤、双绞线或同轴电缆的,无线通信链路包括蓝牙通信链路、无线保真(wireless-fidelity,wi-fi)通信链路或微波通信链路等。
33.终端201可以通过网络202与服务器203交互,以接收来自服务器203的消息或向服务器203发送消息。终端201可以是硬件,也可以是软件。当终端201为硬件时,可以是各种终端,包括但不限于智能手表、智能手机、平板电脑、膝上型便携式计算机和台式计算机等。当终端201为软件时,可以是安装在上述所列举的终端中,其可以实现呈多个软件或软件模块(例如:用来提供分布式服务),也可以实现成单个软件或软件模块,在此不作具体限定。
34.进一步地,在本技术实施例中,文件接收方法主要应用在文件发送端与文件接收端之间,因此终端201还可以包括文件发送端2011以及文件接收端2022,那么文件发送端2011可以通过网络202、服务器203与文件接收端2022进行文件传输等交互动作,并且文件发送端2011也可以直接通过网络202与文件接收端2022进行文件传输等交互动作。
35.服务器203可以是提供各种服务的业务服务器。需要说明的是,服务器203可以是硬件,也可以是软件。当服务器203为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器203为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块,在此不做具体限定。
36.应理解,图1中的终端、网络以及服务器的数目仅是示意性的,根据实现需要,可以是任意数量的终端、网络以及服务器。
37.请参阅图3,图3为本技术实施例提供的一种文件接收方法的流程示意图。
38.可以理解的,本技术实施例提供的一种文件接收方法应用于文件传输过程中的文件接收端,并且一种文件接收方法的执行主体可以是文件接收端,可以是文件接收端中的处理器,还可以是文件接收端中执行文件接收方法的相关服务,为方便描述,下面以执行主体为文件接收端中的处理器为例对文件接收方法进行介绍。
39.如图3所示,文件接收方法包括:
40.s301、创建缓存容器池、第一线程以及第二线程。
41.可以理解的,由于文件接收过程中创建文件的过程是比较耗时的,那么文件接收过程中应该着重放在监听并接收数据发送端发送的文件数据流的工作上,因此可以创建不同的线程,并控制不同的线程分别进行文件数据流的接收工作以及文件数据流对应的文件创建工作。为此在通过线程接收文件之前,首先文件发送端需要与文件接收端建立通信连接。
42.在本技术实施例中,不同设备之间可以进行文件传输,其中,文件是用来存储计算机数据的,是计算机软件的重要组成部分,文件可以存放在多种介质中,例如硬盘、软盘和光盘,而且还可以在文件发送端与文件接收端建立通信连接之后,通过网络等通信方式进行传输。
43.进一步地,文件发送端与文件接收端建立通信连接的类型可以不做限定,通信连接的类型可以是无线通信连接或者有线通信连接,例如,在某一实施例中,文件发送端与文件接收端建立的通信连接可以是在无线局域网内建立socket连接。
44.在文件接收端与文件发送端建立通信连接之后,一方面,对于文件发送端来说,文件发送端可以读取需要发送的文件,并将各文件转换为各文件对应的文件数据流,以便于文件的传输,其中文件数据流也即文件对应的字节序列(字符序列),因此文件数据流也可以称为文件字节流。进一步地,文件发送端还可以将各文件数据流按数据预设编码格式写入文件发送端中的内核网卡驱动,内核网卡驱动再将各文件数据流通过预设传输协议传输到文件接收端的端口。
45.另一方面,对于文件接收端来说,为了将文件数据流的接收工作与文件数据流对应的文件创建工作分开进行,可以至少创建两种不同类型且独立的线程也即本技术实施例中的第一线程和第二线程。
46.在一种可行的实施方式中,第一线程和第二线程可以是在文件接收端与文件发送端建立通信连接之前就已经提前创建的,那么文件接收端与文件发送端建立通信连接之后,可以直接调用第一线程和第二线程,这样可以减少创建线程所耗费的时间;在另外一种可行的实施例方式中,第一线程和第二线程可以是在文件接收端与文件发送端建立通信连接之后创建的,这样可以减少线程所占用的资源。
47.进一步地,第一线程和第二线程的具体数量可以不做限定,其中第一线程用于文件数据流的接收工作,且当第一线程的数量为多个时,多个第一线程可以并行运行,以实现并行接收文件数据流;而第二线程用于文件数据流对应的文件创建工作,同样的,当第二线程的数量为多个时,多个第二线程可以并行运行,以实现并行创建文件数据流对应的文件。
48.同时为了使第一线程着重在文件数据的接收工作,那么第一线程在接收文件数据流之后,并不会直接将文件数据流发送至第二线程,而是可以控制第一线程将接收到的文件数据流暂时保存起来,以减少第一线程和第二线程之间频繁的交互。为此在创建第一线程以及第二线程的过程中,还可以创建缓存容器池,那么缓存容器池也可以是在文件接收端与文件发送端建立通信连接之前就已经提前创建的,或者可以是在文件接收端与文件发送端建立通信连接之后创建的,以通过缓存容器池来暂时保存第一线程接收到的文件数据流,也便于后续第二线程从缓存容器池中取出文件数据流并创建文件数据流对应的文件。
49.s302、控制第一线程在接收到文件发送端发送的文件数据流时,将文件数据流保
存至缓存容器池中。
50.在文件接收端与文件发送端建立通信连接,并且创建了缓存容器池、第一线程以及第二线程之后,文件接收端中的处理器可以控制第一线程监听到文件接收端的端口中是否存在来自文件发送端发送的文件数据流,并每当第一线程监听到文件接收端的端口中存在来自文件发送端发送的文件数据流时,处理器控制第一线程接收文件数据流,并在接收到文件发送端发送的文件数据流时,将接收到的文件数据流保存至缓存容器池中,以实现循环接收文件发送端发送的至少一个文件的文件数据流,以及将各文件数据流保存至缓存容器池中。
51.由上述第一线程所做的工作来看,第一线程的工作重心仅仅在文件数据流的接收工作上,也即只要监听到文件接收端的端口存在文件发送端发送的文件数据流,第一线程就可以接收该文件数据流,这大大提高了通信接口的使用效率,也减少了第一线程和第二线程之间的交互工作。
52.s303、控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。
53.进一步地,由于在文件接收端与文件发送端建立通信连接之后,还创建了独立于第一线程的第二线程,也即第二线程的工作过程不会影响到第一线程接收文件数据流的工作,因此在第一线程将接收到的各文件数据流保存至缓存容器池之后,第二线程可以在缓存容器池中存在文件数据流之后,就从缓存容器池中读取出第一线程保存的文件数据流,并基于文件数据流创建文件数据流对应的文件。
54.进一步地,第二线程也可以在第二线程满足预设条件时或者在缓存容器池满足预设条件时,从缓存容器池中读取出第一线程保存的文件数据流,并基于文件数据流创建文件数据流对应的文件。
55.在一种可行的实施方式中,可以控制第二线程在监测到缓存容器池中存在文件数据流的第一时间,就从缓存容器池中读取出第一线程保存的文件数据流,并基于文件数据流创建对应的文件,这样操作的好处是,可以提高创建文件数据流对应的文件的时效性。
56.在另一种可行的实施方式中,还可以控制第二线程在监测到缓存容器池中保存的各文件数据流的数据量达到数据量阈值时,从缓存容器池中读取出第一线程保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件,这样操作的好处是,第二线程可以一次性读取出一定数据量的文件数据流,并集中进行文件创建工作,可以减少第二线程对文件流数据的频繁读取工作,提高第二线程创建各文件数据流对应的文件的效率,本技术对第二线程创建各文件流的时机可以不做限定。
57.具体地,第二线程基于缓存容器池中保存的各文件数据流分别创建各文件数据流对应的文件的过程中,可以先从各文件数据流中按文件格式解析出各文件数据流对应的文件头、文件字节流以及文件保存路径等信息,然后按照各文件头创建文件并将各文件字节流写入创建的文件中,最后将各文件按照对应的文件保存路径逐个保存到指定目录中,此时也就完成了文件的接收工作。
58.由上述第二线程所做的工作来看,第二线程在创建各文件数据流对应的文件过程中不会和第一线程有交互动作,也即可以认为第二线程创建各文件数据流对应的文件的过程是独立于第一线程的工作的,因此耗时较长的文件创建工作完全可以通过第二线程完
成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
59.在本技术实施例中,通过创建缓存容器池、第一线程以及第二线程,那么在文件的接收过程中可以控制第一线程在接收到文件数据流时,将文件数据流保存至缓存容器池中,并且还可以控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。由于通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
60.请参阅图4,图4为本技术另一实施例提供的一种文件接收方法的流程示意图。
61.如图4所示,文件接收方法包括:
62.s401、创建缓存容器池、第一线程以及第二线程,以及在缓存容器池中创建多个缓存容器对象、第一队列、第二队列以及第三队列。
63.关于文件接收端与文件发送端建立通信连接、创建第一线程以及创建第二线程的过程,可以参阅上述s301步骤中的详细记载,此处不再赘述。
64.值得注意的是,缓存容器池可以理解为一个存放数据的临时容器,那么在缓存容器池中具体是由其中设置的缓存容器对象对数据进行具体的保存的,因此在创建缓存容器池的过程中,是首先创建存放数据的容器也即缓存容器池,然后在缓存容器池中创建多个用于具体存放数据的缓存容器对象,其中缓存容器对象的数量可以不做限定,并且缓存容器池可以设置于第一线程中或者缓存容器池与第一线程设置于同一运行内存中,便于第一线程与缓存容器池之间进行交互。
65.进一步地,由于缓存容器池中缓存容器对象的数量是多个,那么在后续数据存放到缓存容器对象的过程中,缓存容器池中会存在不同存储状态的缓存容器对象,例如,有的缓存容器对象无存放数据,有的缓存容器对象已经存放满数据,如果将不同存储状态的缓存容器对象统一存放,那么第一线程将数据保存到缓存容器对象的过程中,第一线程并不能快速找到可以存放数据的缓存容器对象,会导致第一线程将数据保存到缓存容器对象的过程中耗费较多时间;同时,如果将不同存储状态的缓存容器对象统一存放,第二线程从缓存容器对象中读取数据的过程,第二线程也不能快速找到符合条件的缓存容器对象。
66.因此在本技术实施例中,可以在缓存容器池中创建多个缓存容器对象的同时,还创建第一队列、第二队列以及第三队列,其中第一队列用于存放未写入文件数据流的缓存容器对象也即第一缓存容器对象,第二队列用于存放正在写入文件数据流的缓存容器对象也即第二缓存容器对象,第三队列用于存放文件数据流的数据量达到数据量阈值的缓存容器对象也即第三缓存容器对象,以保证后续第一线程和第二线程正常运行。
67.可以理解的,在创建多个缓存容器对象之后,此时各缓存容器对象还未写入文件数据流,那么可以将全部未写入文件数据流的第一缓存容器对象保存在第一队列中。
68.s402、控制第一线程在接收到文件发送端发送的文件数据流时,若文件数据流大于预设数据量阈值,则创建文件数据流对应的文件。
69.在本技术实施例中,在第一线程在接收到文件发送端发送的文件的文件数据流时,由于第二队列用于存放正在写入文件数据流的第二缓存容器对象,因此可以控制第一
线程将文件数据流保存至第二队列中的第二缓存容器对象,直到文件发送端停止发送文件的文件数据流,以实现第一线程循环接收文件发送端发送的至少一个文件的文件数据流,以及将各文件数据流保存至缓存容器池中。
70.可以理解的,当文件发送端发送的文件包括数据量较小的小文件时,此时小文件的数量会较多,本技术通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
71.但是当文件发送端发送的文件为数据量较大的大文件时,通常大文件的数量都较少,第一线程中并不会存在很多文件数据流的接收工作,第一线程此时较为空闲,此时如果通过第一线程接收并暂时保存将大文件对应的文件数据流,然后再通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,反而会增加一个数据保存动作以及数据读取的动作,导致整体的文件接收工作耗费较多时间。
72.那么为了满足不同数据量文件的处理要求,可以在控制第一线程在接收到文件发送端发送的文件的文件数据流之后,判断文件数据流是否大于预设数据量阈值,进而判断文件数据流对应的文件是大文件还是小文件,以进行不同的文件操作。其中,判断文件数据流是否大于预设数据量阈值的步骤可以在处理器中进行,也可以在其他外部设备或者服务器中进行,此时处理器只需要接收判断结果即可,并且预设数据量阈值可以根据需要进行设定,例如,预设数据量阈值可以设置为16k,如果文件数据流大于16k,则可以认为文件数据流对应的文件为大文件;如果文件数据流等于或者小于16k,则可以认为文件数据流对应的文件为小文件,本技术对预设数据量阈值的具体数值不做限定。
73.若第一线程接收到文件数据流之后,并判断文件数据流大于预设数据量阈值,则可以确定文件发送端发送的文件为大文件,此时不需要暂时保存将大文件对应的文件数据流,可以控制第一线程直接创建文件数据流对应的文件,这样操作的好处是,大文件的数量较少,控制第一线程直接创建文件数据流对应的文件,并不会增加第一线程较多的工作量,并且由于不增加后续的数据保存动作以及数据读取的动作,也可以提升整体的文件接收速度。其中,创建文件数据流对应的文件的过程可以参阅步骤s303中的记载,此处不再赘述。
74.s403、控制第一线程在接收到文件发送端发送的文件数据流时,若文件数据流小于或者等于预设数据量阈值,则执行将文件数据流保存至第二队列中的第二缓存容器对象。
75.若第一线程接收到文件数据流之后,并判断文件数据流小于或者等于预设数据量阈值,则可以确定文件发送端发送的文件为小文件,此时需要将文件数据流保存至第二队列中的第二缓存容器对象,以实现通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
76.s404、若第二队列中不存在第二缓存容器对象,则从取出第一队列中的第一缓存容器对象放入第二队列中,以作为第二队列中的第二缓存容器对象,并将文件数据流保存
至第二队列中的第二缓存容器对象。
77.可以理解的,由于第二队列用于存放正在写入文件数据流的第二缓存容器对象,当第二队列中不存在第二缓存容器时,是不能直接将文件数据流保存至第二缓存容器中的,因此第一线程在接收到文件数据流之后,可以先判断第二队列中是否存在第二缓存容器对象,并根据第二队列中是否存在第二缓存容器对象进行相关操作,以保证第一线程可以将接收到的文件数据流保存至第二队列中的第二缓存容器对象。
78.若第一线程确定第二队列中不存在第二缓存容器对象,而由于第一队列用于存放未写入文件数据流的第一缓存容器对象,因此第一线程可以取出第一队列中的第一缓存容器对象放入第二队列中,那么放入到第二队列中的第一缓存容器就可以作为第二队列中正在写入文件数据流的第二缓存容器对象,进而第一线程就将文件数据流保存至第二队列中的第二缓存容器对象。
79.s405、若第二队列中存在第二缓存容器对象,则直接将文件数据流保存至第二队列中的第二缓存容器对象。
80.若第一线程确定第二队列中存在第二缓存容器对象,也即第二队列中的第二缓存容器对象可以直接用于数据的写入,因此第一线程可以直接将文件数据流保存至第二队列中的第二缓存容器对象。
81.s406、若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量未达到数据量阈值,则保留第二队列中的第二缓存容器对象。
82.可以理解的,在第一线程将文件数据流保存至第二队列中的第二缓存容器对象之后,此时第二队列中的第二缓存容器对象中一定存放有数据,那么如果第二队列中的第二缓存容器对象中存放的各文件数据流的数据量已经达到存放阈值,此时后续第一线程再接收到新的文件数据流之后,虽然确定第二队列中存在第二缓存容器对象,但是第二队列中的第二缓存容器对象中没有可用的存放空间,此时第一线程依然不能再将新的文件数据流保存至第二队列中的第二缓存容器对象。
83.进一步地,如果第二队列中的第二缓存容器对象中存放的各文件数据流的数据量已经达到存放阈值,那么后续第二线程是需要对存放的数据量已经达到存放阈值的第二缓容器对象中的文件数据流进行处理的,因此也需要将存放的各文件数据流的数据量已经达到存放阈值的第二缓容器对象单独保存,以便于第二线程可以直接读取对应的文件数据流。
84.因此在第一线程将文件数据流保存至第二队列中的第二缓存容器对象之后,还可以判断第二队列中的第二缓存容器对象中存放的各文件数据流的数据量是否未达到数据量阈值,以便于第一线程根据第二缓存容器对象中存放数据的情况,对第二缓存容器对象进行处理,以保证第二队列中存在可以写入数据的第二缓存容器对象,也可以保证第二线程可以读取对应的文件数据流,其中,数据量阈值可以根据第二缓存容器对象的最大数据容纳量确定。
85.若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量未达到数据量阈值,则代表第二队列中的第二缓存容器对象中存在可以存放数据的可用存储空间,那么第一线程可以在接收到文件数据流之后,可以继续将接收到的文件数据流保存在第二队列中的第二缓存容器对象中,此时可以保留第二队列中的第二缓存容器对象。
86.s407、若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量达到数据量阈值,则将第二队列中的第二缓存容器对象放入第三队列中,以作为第三队列中的第三缓存容器对象。
87.若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量达到数据量阈值,则代表第二队列中的第二缓存容器对象中没有可用的存放空间,第一线程在接收到文件数据流之后,不能将新的文件数据流保存至第二队列中的第二缓存容器对象,由于第三队列用于存放文件数据流的数据量达到数据量阈值的第三缓存容器对象,此时可以将第二队列中的第二缓存容器对象放入第三队列中,那么存放文件数据流的数据量达到数据量阈值的第二缓存容器对象也就可以作为第三队列中的第三缓存容器对象,便于后续第二线程从第三缓存容器对象中读取出大量的文件数据流,并创建各文件数据流对应的文件。
88.虽然第一线程将第二队列中的第二缓存容器对象放入第三队列中之后,此时第二队列中不存在第二缓存容器对象,但是在之前的步骤中已经记载了,第一线程若判断第二队列中不存在第二缓存容器对象,会从取出第一队列中的第一缓存容器对象放入第二队列中,以作为第二队列中的第二缓存容器对象,因此上述操作也可以保证第二队列中一直存在可以写入文件数据流的第二缓存容器对象。
89.上述步骤描述了第一线程在接收到一个文件数据流时进行的操作,据此可以重复上述步骤,直到文件发送端停止发送文件的文件数据流。
90.s408、控制第二线程在监测到缓存容器池中第三队列中存在第三缓存容器对象时,取出第三队列中的第三缓存容器对象。
91.由于在上述步骤中记载了,将存放文件数据流的数据量达到数据量阈值的第二缓存容器对象作为第三队列中的第三缓存容器对象,因此只要第三队列中存在第三缓存容器对象,也即代表第三缓存容器对象中的各文件数据流的数据量达到数据量阈值了,此时可以控制第二线程进行各文件数据流对应的文件创建工作。
92.具体的,可以控制第二线程对缓存容器池中第三队列中是否存在第三缓存容器对象进行监测,当监测到缓存容器池中第三队列中存在第三缓存容器对象时,可以取出第三队列中的第三缓存容器对象,以便于后续的文件创建工作。
93.s409、读取第三缓存容器对象中保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件。
94.在取出第三队列中的第三缓存容器对象之后,还可以控制第二线程读取第三缓存容器对象中保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件,其中基于各文件数据流分别创建各文件数据流对应的文件的具体过程,可以参阅步骤s303,此处不再赘述。
95.s410、控制第二线程将读取完各文件数据流之后的第三缓存容器对象放入第一队列中,作为第一队列中的第一缓存容器对象。
96.当第二线程取出第三队列中的第三缓存容器对象,并读取完第三缓存容器对象中保存的各文件数据流之后,第三缓存容器对象可以认为是未写入文件数据流的缓存容器对象,因此可以控制第二线程将读取完各文件数据流之后的第三缓存容器对象放入第一队列中,也即将读取各文件数据流之后的第三缓存容器对象作为第一队列中的第一缓存容器对象,一方面可以减少第三队列中存放第三缓存容器对象的压力,另一方面,也可以及时补充
第一队列中的第一缓存容器对象。
97.请参阅图5,图5为本技术另一实施例提供的一种文件接收方法的数据流向示意图。
98.如图5所示,在本技术实施例中,通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,而且分别创建了三种不同的队列以保存三种不同存储状态的缓存容器对象,也即第一队列、第二队列以及第三队列,其中,第一队列用于存放未写入文件数据流的第一缓存容器对象,第二队列用于存放正在写入文件数据流的第二缓存容器对象,第三队列用于存放文件数据流的数据量达到数据量阈值的第三缓存容器对象。这样可以使得第一线程快速找到可以存放数据的缓存容器对象,减少第一线程将数据保存到缓存容器对象的过程中耗费的时间;也可以使得第二线程也不能快速找到符合条件的缓存容器对象,以进行文件数据流的文件创建工作。
99.请参阅图6,图6为本技术另一实施例提供的一种文件接收装置的结构示意图。
100.如图6所示,文件接收装置600包括:
101.容器池创建模块610,用于创建缓存容器池、第一线程以及第二线程。
102.缓存接收模块620,用于控制第一线程在接收到文件发送端发送的文件数据流时,将文件数据流保存至缓存容器池中。
103.文件创建模块630,用于控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。
104.可选地,文件创建模块630,还用于控制第二线程在监测到缓存容器池中保存的各文件数据流的数据量达到数据量阈值时,基于缓存容器池中保存的各文件数据流分别创建各文件数据流对应的文件。
105.可选地,容器池创建模块610,还用于创建缓存容器池,以及在缓存容器池中创建多个缓存容器对象、第一队列、第二队列以及第三队列;
106.其中,第一队列用于存放未写入文件数据流的第一缓存容器对象,第二队列用于存放正在写入文件数据流的第二缓存容器对象,第三队列用于存放文件数据流的数据量达到数据量阈值的第三缓存容器对象。
107.可选地,缓存接收模块620,还用于将文件数据流保存至第二队列中的第二缓存容器对象。
108.可选地,缓存接收模块620,还用于若文件数据流大于预设数据量阈值,则创建文件数据流对应的文件;若文件数据流小于或者等于预设数据量阈值,则执行将文件数据流保存至第二队列中的第二缓存容器对象。
109.可选地,缓存接收模块620,还用于若第二队列中不存在第二缓存容器对象,则从取出第一队列中的第一缓存容器对象放入第二队列中,以作为第二队列中的第二缓存容器对象,并将文件数据流保存至第二队列中的第二缓存容器对象;若第二队列中存在第二缓存容器对象,则直接将文件数据流保存至第二队列中的第二缓存容器对象。
110.可选地,缓存接收模块620,还用于若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量未达到数据量阈值,则保留第二队列中的第二缓存容器对象;若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量达到数据量阈值,则将第二队
列中的第二缓存容器对象放入第三队列中,以作为第三队列中的第三缓存容器对象。
111.可选地,文件创建模块630,还用于控制第二线程在监测到缓存容器池中第三队列中存在第三缓存容器对象时,取出第三队列中的第三缓存容器对象;读取第三缓存容器对象中保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件。
112.可选地,文件创建模块630,还用于控制第二线程将读取完各文件数据流之后的第三缓存容器对象放入第一队列中,作为第一队列中的第一缓存容器对象。
113.在本技术实施例中,一种文件接收装置包括:容器池创建模块,用于创建缓存容器池、第一线程以及第二线程;缓存接收模块,用于控制第一线程在接收到文件发送端发送的文件数据流时,将文件数据流保存至缓存容器池中;文件创建模块,用于控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。由于通过第一线程接收并暂时保存文件发送端发送的文件数据流,并且通过独立于第一线程的第二线程基于保存的文件数据流创建对应的文件,因此耗时较长的文件创建工作可以通过第二线程完成,那么第一线程可以着重于对文件数据流的接收工作上,这样可以提高通信接口的使用效率,提高网络吞吐量,增加设备间文件传输速度。
114.本技术实施例还提供了一种计算机存储介质,计算机存储介质存储有多条指令,指令适于由处理器加载并执行如上述实施例中的任一项的方法的步骤。
115.进一步地,请参见图7,图7为本技术实施例提供了一种终端的结构示意图。如图7所示,终端700可以包括:至少一个中央处理器701,至少一个网络接口704,用户接口703,存储器705,至少一个通信总线702。
116.其中,通信总线702用于实现这些组件之间的连接通信。
117.其中,用户接口703可以包括显示屏(display)、摄像头(camera),可选用户接口703还可以包括标准的有线接口、无线接口。
118.其中,网络接口704可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
119.其中,中央处理器701可以包括一个或者多个处理核心。中央处理器701利用各种接口和线路连接整个终端700内的各个部分,通过运行或执行存储在存储器705内的指令、程序、代码集或指令集,以及调用存储在存储器705内的数据,执行终端700的各种功能和处理数据。可选的,中央处理器701可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。中央处理器701可集成中央中央处理器(central processing unit,cpu)、图像中央处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器701中,单独通过一块芯片进行实现。
120.其中,存储器705可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器705包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器705可用于存储指令、程序、代码、代码集或指令集。存储器705可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功
能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器705可选的还可以是至少一个位于远离前述中央处理器701的存储装置。如图7所示,作为一种计算机存储介质的存储器705中可以包括操作系统、网络通信模块、用户接口模块以及文件接收程序。
121.在图7所示的终端700中,用户接口703主要用于为用户提供输入的接口,获取用户输入的数据;而中央处理器701可以用于调用存储器705中存储的文件接收程序,并具体执行以下操作:
122.创建缓存容器池、第一线程以及第二线程;控制第一线程在接收到文件发送端发送的文件数据流时,将文件数据流保存至缓存容器池中;控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件。
123.可选地,控制第二线程基于缓存容器池中保存的文件数据流创建文件数据流对应的文件,包括:控制第二线程在监测到缓存容器池中保存的各文件数据流的数据量达到数据量阈值时,基于缓存容器池中保存的各文件数据流分别创建各文件数据流对应的文件。
124.可选地,创建缓存容器池,包括:创建缓存容器池,以及在缓存容器池中创建多个缓存容器对象、第一队列、第二队列以及第三队列;其中,第一队列用于存放未写入文件数据流的第一缓存容器对象,第二队列用于存放正在写入文件数据流的第二缓存容器对象,第三队列用于存放文件数据流的数据量达到数据量阈值的第三缓存容器对象。
125.可选地,将文件数据流保存至缓存容器池中,包括:将文件数据流保存至第二队列中的第二缓存容器对象。
126.可选地,将文件数据流保存至第二队列中的第二缓存容器对象之前,还包括:若文件数据流大于预设数据量阈值,则创建文件数据流对应的文件;若文件数据流小于或者等于预设数据量阈值,则执行将文件数据流保存至第二队列中的第二缓存容器对象。
127.可选地,将文件数据流保存至第二队列中的第二缓存容器对象,包括:若第二队列中不存在第二缓存容器对象,则从取出第一队列中的第一缓存容器对象放入第二队列中,以作为第二队列中的第二缓存容器对象,并将文件数据流保存至第二队列中的第二缓存容器对象;若第二队列中存在第二缓存容器对象,则直接将文件数据流保存至第二队列中的第二缓存容器对象。
128.可选地,将文件数据流保存至第二队列中的第二缓存容器对象之后,还包括:若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量未达到数据量阈值,则保留第二队列中的第二缓存容器对象;若第二队列中的第二缓存容器对象中存放的各文件数据流的数据量达到数据量阈值,则将第二队列中的第二缓存容器对象放入第三队列中,以作为第三队列中的第三缓存容器对象。
129.可选地,控制第二线程在监测到缓存容器池中保存的各文件数据流的数据量达到数据量阈值时,基于缓存容器池中保存的各文件数据流分别创建各文件数据流对应的文件,包括:控制第二线程在监测到缓存容器池中第三队列中存在第三缓存容器对象时,取出第三队列中的第三缓存容器对象;读取第三缓存容器对象中保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件。
130.可选地,读取第三缓存容器对象中保存的各文件数据流,并基于各文件数据流分别创建各文件数据流对应的文件之后,包括:控制第二线程将读取完各文件数据流之后的
第三缓存容器对象放入第一队列中,作为第一队列中的第一缓存容器对象。
131.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
132.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
133.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
134.集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
135.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本技术所必须的。
136.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
137.以上为对本技术所提供的一种文件接收方法、装置、存储介质以及终端的描述,对于本领域的技术人员,依据本技术实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本技术的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献