CN102567097B - 一种多任务下载的方法及终端 - Google Patents
一种多任务下载的方法及终端 Download PDFInfo
- Publication number
- CN102567097B CN102567097B CN201110451390.0A CN201110451390A CN102567097B CN 102567097 B CN102567097 B CN 102567097B CN 201110451390 A CN201110451390 A CN 201110451390A CN 102567097 B CN102567097 B CN 102567097B
- Authority
- CN
- China
- Prior art keywords
- download
- browser
- shared drive
- subprocess
- downloading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种多任务下载的方法及终端,其方法包括:浏览器启动,在浏览器中加载用于下载管理的动态库;通过浏览器的网页接收用户的下载指令,并通过浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据;启动下载进程,从共享内存中读取数据,并根据读取的数据进行多任务下载。本发明基于浏览器的javascript扩展,将浏览器下载任务与浏览器进程分离,实现浏览器多任务并发下载,并在下载过程中,可人为控制某个正在下载状态,比如暂停、取消、继续等,提高了CPU资源利用率及浏览器性能,同时具有高效、人性化等特点,使得用户具有良好体验。
Description
技术领域
本发明涉及浏览器任务下载技术领域,尤其涉及一种电视机等终端上基于javascript扩展实现的多任务下载的方法及终端。
背景技术
目前,浏览器已广泛应用于电视机,在电视机上通过浏览器浏览网页下载文件,已成为电视机下载文件的主要手段。
但是,传统的电视机通过浏览器下载文件均属于单任务下载,而且下载任务与浏览器处于同一个进程,若需要从电视机的浏览器上下载多个文件,则只能等待当前下载任务完成后,再启动下一个下载任务,势必影响了网页的整体性能,浪费了CPU资源,而且由于浏览器耗时、耗能,影响了浏览器性能,导致用户浏览网页时的体验效果变差,给用户在操作上带来诸多不便。
发明内容
本发明的主要目的是提供一种多任务下载的方法及终端,旨在实现浏览器的多任务并发下载,提高用户体验效果。
为了达到上述目的,本发明提出一种多任务下载的方法,包括:
浏览器启动,在浏览器中加载用于下载管理的动态库;
通过所述浏览器的网页接收用户的下载指令,并通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据;所述共享内存由所述浏览器和下载进程共同创建;
启动所述下载进程,从所述共享内存中读取数据,并根据读取的数据进行多任务下载。
优选地,所述共享内存中的数据包括控制标志位以及下载信息;所述下载信息至少包括以下一个:下载任务个数、下载地址、下载完成后的保存路、子进程标识。
优选地,所述启动下载进程,从所述共享内存中读取数据,并根据读取的数据进行多任务下载的步骤包括:
父进程启动下载进程,并读取所述共享内存中的控制标志位;
当所述控制标志位为第一预定值时,所述父进程读取所述共享内存中的下载信息,并根据所述下载信息,创建至少两个用于下载任务的子进程;
通过所述子进程进行多任务下载。
优选地,所述通过子进程进行多任务下载的步骤包括:
所述子进程创建各自的下载子线程;并通过主线程控制所述子线程执行相应下载任务。
优选地,该方法还包括:
在多任务下载过程中,通过所述浏览器的网页接收用户的下载更新指令;
通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在所述共享内存中更新控制标志位的值并写入下载状态改变的子进程标识。
优选地,所述通过子进程进行多任务下载的步骤还包括:
所述子进程的主线程监听所述共享内存中的控制标志位;
当所述共享内存中的控制标志位为非所述第一预定值时,获取所述共享内存中下载状态改变的子进程标识;
比较所述下载状态改变的子进程标识与所述主线程当前的子进程标识;若两者不一致,则保持当前子线程的下载进程的状态;否则
所述主线程根据所述共享内存中的控制标志位,控制当前子线程的下载任务的状态。
本发明还提出一种多任务下载的终端,包括:浏览器模块及任务下载模块,其中:
所述浏览器模块包括:
加载单元,用于在浏览器启动时,在所述浏览器中加载用于下载管理的动态库;
接收单元,用于通过所述浏览器的网页接收用户的下载指令;
写入单元,用于通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据;所述共享内存由所述浏览器和下载进程共同创建;
所述任务下载模块,用于启动所述下载进程,从所述共享内存中读取数据,并根据读取的数据进行多任务下载。
优选地,所述任务下载模块包括:
父进程单元,用于启动下载进程,并读取所述共享内存中的控制标志位;当所述控制标志位为第一预定值时,读取所述共享内存中的下载信息,并根据所述下载信息,创建至少两个用于下载任务的子进程。
子进程单元,用于通过所述子进程进行多任务下载。
优选地,所述子进程单元包括:
创建单元,用于创建下载任务的子线程;
子线程单元,用于执行所述子线程对应的下载任务;
主线程单元,用于控制所述子线程单元执行相应下载任务。
优选地,所述接收单元,还用于在多任务下载过程中,通过所述浏览器的网页接收用户的下载更新指令;
所述写入单元,还用于通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在所述共享内存中更新控制标志位的值并写入下载状态改变的子进程标识。
优选地,所述主线程单元还用于监听所述共享内存中的控制标志位;当所述共享内存中的控制标志位为非所述第一预定值时,获取所述共享内存中下载状态改变的子进程标识;比较所述下载状态改变的子进程标识与所述主线程当前的子进程标识;若两者不一致,则保持当前子线程的下载进程的状态;否则,根据所述共享内存中的控制标志位,控制当前子线程的下载任务的状态。
本发明提出的一种多任务下载的方法及终端,基于电视机等终端浏览器的javascript扩展,将浏览器下载任务与浏览器独立起来,使浏览器能够多任务并发下载,在下载的过程中,可人为控制某个正在下载状态,比如:暂停、取消、继续等动作,提高了CPU资源利用率及浏览器性能,同时具有高效、人性化等特点,使得用户具有良好的体验性。
附图说明
图1是本发明一种多任务下载的方法第一实施例的流程示意图;
图2是本发明一种多任务下载的方法第一实施例中启动下载进程,从共享内存中读取数据,并根据读取的数据进行多任务下载的流程示意图;
图3是本发明一种多任务下载的方法第二实施例的流程示意图;
图4是本发明一种多任务下载的方法第二实施例中通过子进程进行多任务下载的流程示意图;
图5是本发明一种多任务下载的终端第一实施例的结构示意图;
图6是本发明一种多任务下载的终端第一实施例中浏览器模块的结构示意图;
图7是本发明一种多任务下载的终端第一实施例中任务下载模块的结构示意图;
图8是本发明一种多任务下载的终端第一实施例中子进程单元的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
本发明的主要解决方案是:基于电视机等终端浏览器的javascript扩展,把浏览器下载任务与浏览器独立起来,使浏览器能够多任务并发下载,充分利用CPU资源,提高用户体验效果。
本发明中终端可以为安装有浏览器的电视机、电脑等,以下各实施例以终端为电视机为例进行说明。
电视机中的浏览器和任务下载进程间的通信通过共享内存的方式进行,浏览器与任务下载进程之间的同步和互斥通过信号量方式的加锁和解锁来实现。当用户操作网页上的按钮时,会调用浏览器内核javascript扩展接口,javascript扩展接口调用动态库相应的函数接口,对共享内存进行写入操作,其中,所述共享内存由所述浏览器和下载进程共同创建;下载进程通过不断读取共享内存的数据,根据读到的不同数据进行相应的处理,当读到需要多任务下载时,则启动多个下载任务子进程,从而实现多任务下载。
具体地,请参照图1,图1为本发明一种多任务下载的方法第一实施例的流程示意图。本发明第一实施例提出的一种多任务下载的方法,包括:
步骤S101,浏览器启动,在浏览器中加载用于下载管理的动态库;
步骤S102,通过浏览器的网页接收用户的下载指令,并通过浏览器的javascript扩展接口调用动态库的相应函数接口,在共享内存中写入数据;
上述步骤S101及步骤S102中,以电视机为例,当用户打开电视机的主菜单进入浏览器的下载页面时,浏览器启动并加载用于下载管理的动态库(libchdownloadmanager.so)。这些库具有相应的操作函数,比如:downloadmanager_resume、downloadmanager_pause、downloadmanager_cancel、downloadmanager_downloadtasklist、downloadmanager_getTaskList,上述各函数分别对应的下载状态为:继续、停止、取消、下载任务列表、获取任务列表。如果浏览器进入下载页面,则浏览器的下载页面自动调用CHdownloadmanager_Initialize函数,该函数的功能是创建共享内存和信号量。
浏览器的下载网页对这些函数的调用必须经过浏览器内核的javascript扩展接口。当用户操作浏览器网页上的按钮时,浏览器的下载网页会调用浏览器内核javascript扩展接口,javascript扩展接口则调用下载管理的动态库相应的函数接口,所述动态库则对共享内存进行写入操作。
如上所述,电视机中的浏览器和任务下载进程间的通信通过共享内存的方式进行,该共享内存由浏览器与下载进程共同创建。
当用户进入浏览器的下载页面时,下载进程启动后,创建共享内存和信号量。
在浏览器侧,当用户进入浏览器的下载页面时,浏览器的下载页面自动调用CHdownloadmanager_Initialize函数,创建共享内存和信号量。
比如,当用户点击网页的【选择】按钮,浏览器将该下载加到任务列表,当用户再按【下载】按钮时,浏览器的下载网页则通过downloadmanager_downloadtasklist函数把下载任务以json数据格式传下来,通过解析json得到相应的数据,浏览器再将此数据写到共享内存。
上述共享内存中的数据包括:控制标志位以及下载信息;其中:下载信息至少包括以下的一个:下载任务个数、下载地址、下载完成后的保存路径、子进程标识(AppKey)。
控制标志位的值可以预先设定,比如可以设定控制标志位的值为0、1、2、3、4、5等,其中各值的含义可以采用如下设定:0表示共享内存为空,1表示下载;2表示暂停;3表示取消;4表示继续;5表示退出等。
子进程标识是各个下载子进程的标识,当用户有多个下载任务时,下载进程的父进程将根据共享内存中的下载信息创建与各子进程标识对应的子进程,各子进程再执行各自的下载任务。
步骤S103,启动下载进程,从共享内存中读取数据,并根据读取的数据进行多任务下载。
当用户进入浏览器的下载页面,下载进程的父进程不断监听共享内存的数据。当用户操作浏览器网页上的按钮时,下载进程的父进程开始读取共享内存中的控制标志位。如果读到的控制标志位为1,说明用户有下载请求,父进程则会进一步读取共享内存的下载信息,根据下载信息,父进程通过fork函数创建下载的子进程,每个子进程对应一个共享内存的下载信息中的子进程标识。
以两个下载任务为例,若父进程监测到共享内存的控制标志位为1,则进一步读取共享内存的下载信息(例如下载任务个数、下载地址、下载完后保存的路径、子进程标识等信息),父进程通过fork函数创建出两个下载的子进程,各子进程通过pthread_create函数创建真正的下载子线程,该下载子线程会调用Curl_download函数开始下载。
具体实施过程中,如图2所示,上述步骤S103包括:
步骤S1031,父进程启动下载进程,并读取共享内存中的控制标志位;
步骤S1032,当控制标志位为第一预定值时,父进程读取共享内存中的下载信息,并根据下载信息,创建至少两个用于下载任务的子进程;
其中,第一预定值为上述设定的下载按钮对应的值1。
步骤S1033,通过子进程进行多任务下载。
子进程创建各自的下载子线程;并通过主线程控制子线程进行相应任务下载。
本实施例基于电视机浏览器的javascript扩展,把浏览器下载任务与浏览器独立起来,使浏览器能够多任务并发下载,提高CPU资源利用率及浏览器性能,同时使得用户具有良好体验效果。
如图3所示,本发明第二实施例提出的一种多任务下载的方法,在上述实施例的基础上,在上述步骤S103之后进一步还包括:
步骤S104,在多任务下载过程中,通过浏览器的网页接收用户的下载更新指令;
步骤S105,通过浏览器的javascript扩展接口调用动态库的相应函数接口,在共享内存中更新控制标志位的值并写入下载状态改变的子进程标识。
本实施例与上述实施例的区别在于,本实施例在实现多任务并行下载的同时,在下载过程中,还可以根据用户需要,改变当前下载状态,比如取消、暂停、继续等操作。
当某个子进程的下载任务状态改变时,浏览器根据用户的下载更新指令更新共享内存中的数据,包括改变控制标志位的值以及写入改变后的子进程的标识。后续下载进程将根据共享内存中更新后的控制标志位及下载状态改变后的子进程标识控制相应的子进程的下载状态。
浏览器的下载网页通过每隔一定时间调用downloadmanager_getTaskList获取下载任务的状态,该函数通过不断读取已经下载文件的大小等信息并打包转换成json数据格式,下载网页解析该json包,获取各子进程的下载状态。
如果用户按了【暂停】、【取消】、【继续】等按钮,浏览器的下载网页则调用libchdownloadmanager.so相应的函数接口,将相应的控制标志位(比如2、3、4)和下载状态改变的子进程标识(AppKey)写入共享内存。
下载的子进程不断共享上述共享内存的控制标志位和AppKey,通过主线程不断监听共享内存,并控制下载状态的改变。如果用户需要改变某一子进程下载任务的状态,主线程通过读取共享内存的控制标志位和AppKey(子进程标识),并把读到的AppKey和自身的AppKey比较,如果两者比较相同,即表明是自身下载任务的AppKey,说明用户要改变该下载任务的状态,主线程则调用相应的函数来控制子线程的下载任务的状态,并对共享内存进行清0,否则返回继续读取共享内存,以此类推。直到全部下载任务完成,子进程全部退出,整个下载结束。
具体地,如图4所示,在本实施例中,通过子进程进行多任务下载的步骤还包括:
步骤S10331,子进程的主线程监听共享内存中的控制标志位;
步骤S10332,当共享内存中的控制标志位为非第一预定值时,获取共享内存中下载状态改变的子进程标识;
步骤S10333,比较下载状态改变的子进程标识与主线程当前的子进程标识;若两者不一致,则进入步骤S10334;否则,进入步骤S10335;
步骤S10334,保持当前子线程的下载进程的状态;
步骤S10335,主线程根据共享内存中的控制标志位,控制当前子线程的下载任务的状态。
以两个下载任务为例,对本实施例技术方案进行详细说明:
当下载进程启动后,若父进程监测到共享内存的控制标志位为1,则进一步读取共享内存的下载信息(例如下载任务个数、下载地址、下载完后保存的路径、AppKey等信息),父进程通过fork函数创建出两个下载的子进程,各子进程通过pthread_create函数创建真正的下载子线程,该下载子线程会调用Curl_download函数开始下载。
在下载过程中,若用户对其中一个子进程选择了改变下载状态的按键(比如取消按键),各子进程的主线程通过监听共享内存中的控制标志位获知,共享内存中的控制标志位已经更新为3,则从共享内存中获取下载状态改变的子进程标识,判断该下载状态改变的子进程标识是否为自身子进程的标识,若是,则表明用户需要改变自身子进程的下载状态,该下载状态改变的子进程的主线程将对应该控制标志位3,控制子线程取消当前子进程的下载状态。以此类推,直到所有的子进程下载过程处理(包括下载、暂停取消等)完毕。
本实施例基于电视机浏览器的javascript扩展,使浏览器能够多任务并发下载,在任务下载的过程中,可以人为的控制某个正在下载状态,比如:暂停、取消、继续等动作。该方案把浏览器下载任务与浏览器独立起来,真正实现多任务下载,从而充分利用CPU资源,具有高效、人性化等特点,使得用户有良好体验性。
如图5所示,本发明第一实施例提出一种多任务下载的终端,包括:浏览器模块501及任务下载模块502,其中:
浏览器模块501,用于在浏览器启动时,在浏览器中加载用于下载管理的动态库;通过浏览器的网页接收用户的下载指令,并通过浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据,其中,所述共享内存由所述浏览器和下载进程共同创建;
任务下载模块502,用于启动下载进程,从共享内存中读取数据,并根据读取的数据进行多任务下载。
以电视机为例,当用户打开电视机的主菜单进入浏览器的下载页面时,浏览器通过浏览器模块501启动并加载用于下载管理的动态库(libchdownloadmanager.so)。这些库具有相应的操作函数,比如:downloadmanager_resume、downloadmanager_pause、downloadmanager_cancel、downloadmanager_downloadtasklist、downloadmanager_getTaskList,上述各函数分别对应的下载状态为:继续、停止、取消、下载任务列表、获取任务列表。如果浏览器进入下载页面,则浏览器的下载页面自动调用CHdownloadmanager_Initialize函数,该函数的功能是创建共享内存和信号量。
浏览器的下载网页对这些函数的调用必须经过浏览器内核的javascript扩展接口。当用户操作浏览器网页上的按钮时,浏览器的下载网页会调用浏览器内核javascript扩展接口,javascript扩展接口则调用动态库相应的函数接口,动态库则对共享内存进行写入操作。
当用户有多任务下载请求时,任务下载模块502启动下载进程,从共享内存中读取数据,并根据读取的数据进行多任务下载。
电视机中的浏览器和任务下载进程间的通信通过共享内存的方式进行,该共享内存由浏览器与下载进程共同创建。
当用户进入浏览器的下载页面时,下载进程启动后,创建共享内存和信号量。
在浏览器侧,当用户进入浏览器的下载页面时,浏览器的下载页面自动调用CHdownloadmanager_Initialize函数,创建共享内存和信号量。
比如,当用户点击网页的【选择】按钮,浏览器将该下载加到任务列表,当用户再按【下载】按钮时,浏览器的下载网页则通过downloadmanager_downloadtasklist函数把下载任务以json数据格式传下来,通过解析json得到相应的数据,浏览器再将此数据写到共享内存。
上述共享内存中的数据包括:控制标志位以及下载信息;其中:下载信息至少包括以下一个:下载任务个数、下载地址、下载完成后的保存路径、子进程标识(AppKey)。
控制标志位的值可以预先设定,比如可以设定控制标志位的值为0、1、2、3、4、5等,其中各值的含义可以采用如下设定:0表示共享内存为空,1表示下载;2表示暂停;3表示取消;4表示继续;5表示退出等。
子进程标识是各个下载子进程的标识,当用户有多个下载任务时,下载进程的父进程将根据共享内存中的下载信息创建与各子进程标识对应的子进程,各子进程再执行各自的下载任务。
当用户进入浏览器的下载页面,下载进程的父进程不断监听共享内存的数据。当用户操作浏览器网页上的按钮时,下载进程的父进程开始读取共享内存中的控制标志位。如果读到的控制标志位为1,说明用户有下载请求,父进程则会进一步读取共享内存的下载信息,根据下载信息,父进程通过fork函数创建下载的子进程,每个子进程对应一个共享内存的下载信息中的子进程标识。
以两个下载任务为例,若父进程监测到共享内存的控制标志位为1,则进一步读取共享内存的下载信息(下载任务个数、下载地址、下载完后保存的路径、AppKey等信息),父进程通过fork函数创建出两个下载的子进程,各子进程通过pthread_create函数创建真正的下载子线程,该下载子线程会调用Curl_download函数开始下载。
通过上述过程可以实现两个或多个任务并行下载。
进一步的,本实施例在实现多任务并行下载的同时,在下载过程中,还可以根据用户需要,改变当前下载状态,比如取消、暂停、继续等操作。
在浏览器侧,当某个子进程的下载任务状态改变时,浏览器模块501根据用户的下载更新指令更新共享内存中的数据,包括改变控制标志位的值以及写入改变后的子进程的标识。后续任务下载模块502的下载进程将根据共享内存中更新后的控制标志位及下载状态改变后的子进程标识控制相应的子进程的下载状态。
浏览器的下载网页通过每隔一定时间调用downloadmanager_getTaskList获取下载任务的状态,该函数通过不断读取已经下载文件的大小等信息并打包转换成json数据格式,下载网页解析该json包,获取各子进程的下载状态。
如果用户按了【暂停】、【取消】、【继续】等按钮,浏览器的下载网页则调用libchdownloadmanager.so相应的函数接口,将相应的控制标志位(比如2、3、4)和下载状态改变的子进程标识(AppKey)写入共享内存。
下载的子进程不断共享上述共享内存的控制标志位和AppKey,通过主线程不断用来监听共享内存,并控制下载状态的改变。如果用户需要改变某一子进程下载任务的状态,主线程通过读取共享内存的控制标志位和AppKey,并把读到的AppKey和自身的AppKey比较,如果两者比较相同,即表明是自身下载任务的AppKey,说明用户要改变该下载任务的状态,主线程则调用相应的函数来控制子线程的下载任务的状态,并对共享内存进行清0,否则返回继续读取共享内存,以此类推。直到全部下载任务完成,子进程全部退出,整个下载结束。
以两个下载任务为例,对本实施例技术方案进行详细说明:
当下载进程启动后,若父进程监测到共享内存的控制标志位为1,则进一步读取共享内存的下载信息(例如下载任务个数、下载地址、下载完后保存的路径、AppKey等信息),父进程通过fork函数创建出两个下载的子进程,各子进程通过pthread_create函数创建真正的下载子线程,该下载子线程会调用Curl_download函数开始下载。
在下载过程中,若用户对其中一个子进程选择了改变下载状态的按键(比如取消按键),各子进程的主线程通过监听共享内存中的控制标志位获知,共享内存中的控制标志位已经更新为3,则从共享内存中获取下载状态改变的子进程标识,判断该下载状态改变的子进程标识是否为自身子进程的标识,若是,则表明用户需要改变自身子进程的下载状态,该下载状态改变的子进程的主线程将对应该控制标志位3,控制子线程取消当前子进程的下载状态。以此类推,直到所有的子进程下载过程处理(包括下载、暂停取消等)完毕。
本实施例基于电视机浏览器的javascript扩展,使浏览器能够多任务并发下载,在任务下载的过程中,可以人为的控制某个正在下载状态,比如:暂停、取消、继续等动作。该方案把浏览器下载任务与浏览器独立起来,真正实现多任务下载,从而充分利用CPU资源,具有高效、人性化等特点,使得用户有良好体验性。
具体地,如图6所示,本实施例中浏览器模块501包括:加载单元5011、接收单元5012以及写入单元5013,其中:
加载单元5011,用于在浏览器启动时,在浏览器中加载用于下载管理的动态库;
接收单元5012,用于通过浏览器的网页接收用户的下载指令;
写入单元5013,用于通过浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据,其中,所述共享内存由所述浏览器和下载进程共同创建。
如图7所示,任务下载模块502包括:父进程单元5021以及子进程单元5022,其中:
父进程单元5021,用于启动下载进程,并读取共享内存中的控制标志位;当控制标志位为第一预定值时,读取共享内存中的下载信息,并根据下载信息,创建至少两个用于下载任务的子进程;
子进程单元5022,用于通过子进程进行多任务下载。
如图8所示,子进程单元5022包括:创建单元50221、子线程单元50222以及主线程单元50223,其中:
创建单元50221,用于创建下载任务的子线程;
子线程单元50222,用于在主线程单元50223的控制下执行子线程对应的下载任务;
主线程单元50223,用于控制子线程进行相应任务下载。
进一步的,上述接收单元5012还用于在多任务下载过程中,通过浏览器的网页接收用户的下载更新指令;
上述写入单元5013还用于在多任务下载过程中,通过浏览器的javascript扩展接口调用所述动态库的相应函数接口,更新共享内存中的数据。
上述主线程单元50223还用于在多任务下载过程中,监听共享内存中的控制标志位及子进程标识;当共享内存中的控制标志位为非第一预定值时,获取共享内存中下载状态改变的子进程标识;比较下载状态改变的子进程标识与主线程当前的子进程标识;若两者不一致,则不改变当前子线程的下载进程的状态;否则,根据共享内存中的控制标志位,控制当前子线程的下载任务的状态。
本发明实施例一种多任务下载的方法及终端,基于浏览器的javascript扩展,将浏览器下载任务与浏览器独立起来,使浏览器能够多任务并发下载,下载的过程中,可以人为控制某个正在下载状态,比如:暂停、取消、继续等动作,提高CPU资源利用率及浏览器性能,同时具有高效、人性化等特点,使得用户具有良好体验效果。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种多任务下载的方法,其特征在于,包括:
浏览器启动,在浏览器中加载用于下载管理的动态库;
通过所述浏览器的网页接收用户的下载指令,并通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据;所述共享内存由所述浏览器和下载进程共同创建;
启动所述下载进程,从所述共享内存中读取数据,并根据读取的数据进行多任务下载;具体包括:父进程启动下载进程,并读取所述共享内存中的控制标志位;
当所述控制标志位为第一预定值时,所述父进程读取所述共享内存中的下载信息,并根据所述下载信息,创建至少两个用于下载任务的子进程;
通过所述子进程进行多任务下载。
2.根据权利要求1所述的方法,其特征在于,所述共享内存中的数据包括控制标志位以及下载信息;所述下载信息至少包括如下信息中的一个:下载任务个数、下载地址、下载完成后的保存路径、子进程标识。
3.根据权利要求2所述的方法,其特征在于,所述通过子进程进行多任务下载的步骤包括:
所述子进程创建各自的下载子线程;并通过主线程控制所述子线程执行相应下载任务。
4.根据权利要求2-3中任一项所述的方法,其特征在于,还包括:
在多任务下载过程中,通过所述浏览器的网页接收用户的下载更新指令;
通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在所述共享内存中更新所述控制标志位的值并写入下载状态改变的子进程标识。
5.根据权利要求4所述的方法,其特征在于,所述通过子进程进行多任务下载的步骤还包括:
所述子进程的主线程监听所述共享内存中的控制标志位;
当所述共享内存中的控制标志位为非所述第一预定值时,获取所述共享内存中下载状态改变的子进程标识;
比较所述下载状态改变的子进程标识与所述主线程当前的子进程标识;若两者不一致,则保持当前子线程的下载进程的状态;否则
所述主线程根据所述共享内存中的控制标志位,控制当前子线程的下载任务的状态。
6.一种多任务下载的终端,其特征在于,包括:浏览器模块及任务下载模块,其中:
所述浏览器模块包括:
加载单元,用于在浏览器启动时,在所述浏览器中加载用于下载管理的动态库;
接收单元,用于通过所述浏览器的网页接收用户的下载指令;
写入单元,用于通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在共享内存中写入数据;所述共享内存由所述浏览器和下载进程共同创建;
所述任务下载模块,用于启动所述下载进程,从所述共享内存中读取数据,并根据读取的数据进行多任务下载;所述任务下载模块包括:
父进程单元,用于通过父进程启动下载进程,并读取所述共享内存中的控制标志位;当所述控制标志位为第一预定值时,通过所述父进程读取所述共享内存中的下载信息,并根据所述下载信息,创建至少两个用于下载任务的子进程;
子进程单元,用于通过所述子进程进行多任务下载。
7.根据权利要求6所述的终端,其特征在于,所述子进程单元包括:创建单元,用于通过子进程创建各自的下载子线程;
主线程单元,用于通过主线程控制所述子线程执行相应下载任务。
8.根据权利要求6或7所述的终端,其特征在于,
所述接收单元,还用于在多任务下载过程中,通过所述浏览器的网页接收用户的下载更新指令;
所述写入单元,还用于通过所述浏览器的javascript扩展接口调用所述动态库的相应函数接口,在所述共享内存中更新控制标志位的值并写入下载状态改变的子进程标识。
9.根据权利要求7所述的终端,其特征在于,所述主线程单元还用于通过所述子进程的主线程监听所述共享内存中的控制标志位;当所述共享内存中的控制标志位为非所述第一预定值时,获取所述共享内存中下载状态改变的子进程标识;比较所述下载状态改变的子进程标识与所述主线程当前的子进程标识;若两者不一致,则保持当前子线程的下载进程的状态;否则,通过所述主线程根据所述共享内存中的控制标志位,控制当前子线程的下载任务的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110451390.0A CN102567097B (zh) | 2011-12-29 | 2011-12-29 | 一种多任务下载的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110451390.0A CN102567097B (zh) | 2011-12-29 | 2011-12-29 | 一种多任务下载的方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102567097A CN102567097A (zh) | 2012-07-11 |
CN102567097B true CN102567097B (zh) | 2014-11-26 |
Family
ID=46412589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110451390.0A Active CN102567097B (zh) | 2011-12-29 | 2011-12-29 | 一种多任务下载的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567097B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104423998B (zh) * | 2013-09-04 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 窗口信息的加载方法及装置 |
CN104881307B (zh) * | 2015-05-15 | 2018-09-04 | 广东小天才科技有限公司 | 下载实现方法和装置 |
CN106657195B (zh) * | 2015-11-02 | 2019-12-24 | 北大方正集团有限公司 | 任务处理方法和中继设备 |
CN105677423A (zh) * | 2016-01-11 | 2016-06-15 | 曾戟 | 一种资源下载方法和装置 |
CN108132844B (zh) * | 2016-12-01 | 2020-11-10 | 腾讯科技(深圳)有限公司 | 插件下载方法及装置 |
CN107547629B (zh) * | 2017-07-20 | 2021-02-26 | 北京京东尚科信息技术有限公司 | 客户端静态资源下载的方法、装置、电子设备和可读介质 |
CN107491355A (zh) * | 2017-08-17 | 2017-12-19 | 山东浪潮商用系统有限公司 | 一种基于共享内存的进程间功能调用方法及装置 |
CN112491938B (zh) * | 2019-09-11 | 2023-04-07 | 深圳艾派网络科技股份有限公司 | 一种基于JavaFX自定义的对象存储上传下载方法 |
CN113556402B (zh) * | 2021-07-29 | 2024-03-19 | 北京百度网讯科技有限公司 | 数据下载调度方法、装置及电子设备 |
CN113986438B (zh) * | 2021-10-30 | 2024-01-30 | 深圳市快易典教育科技有限公司 | 动画的加载方法、系统、装置及计算机可读存储介质 |
CN116822472B (zh) * | 2023-08-31 | 2023-11-17 | 青岛诺亚信息技术有限公司 | 一种快速拉取多源数据填充复杂界面表单的方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101383751A (zh) * | 2008-07-24 | 2009-03-11 | 四川长虹电器股份有限公司 | 网络下载方法 |
CN102057683A (zh) * | 2008-06-04 | 2011-05-11 | 三星电子株式会社 | 终端实体的下载方法和设备 |
CN201985978U (zh) * | 2010-11-10 | 2011-09-21 | 深圳市奥软网络科技有限公司 | 一种手机多任务下载系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8356247B2 (en) * | 2008-12-16 | 2013-01-15 | Rich Media Worldwide, Llc | Content rendering control system and method |
-
2011
- 2011-12-29 CN CN201110451390.0A patent/CN102567097B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102057683A (zh) * | 2008-06-04 | 2011-05-11 | 三星电子株式会社 | 终端实体的下载方法和设备 |
CN101383751A (zh) * | 2008-07-24 | 2009-03-11 | 四川长虹电器股份有限公司 | 网络下载方法 |
CN201985978U (zh) * | 2010-11-10 | 2011-09-21 | 深圳市奥软网络科技有限公司 | 一种手机多任务下载系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102567097A (zh) | 2012-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567097B (zh) | 一种多任务下载的方法及终端 | |
CN102426533B (zh) | 软件安装方法及装置 | |
CN109446570B (zh) | 业务流程展示方法、装置、计算机设备以及存储介质 | |
US10684838B2 (en) | Dynamic application deployment | |
CN103345405A (zh) | 应用程序的启动方法、装置和客户端 | |
CN105204913A (zh) | 一种在Android操作系统上运行Linux应用程序的方法及系统 | |
CN103176774A (zh) | 应用程序的编译方法、装置以及系统 | |
CN103345406A (zh) | 一种实现智能移动终端的云端虚拟移动终端的系统和方法 | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN106469071B (zh) | 应用程序主题更换方法及装置 | |
CN105786839A (zh) | 一种应用数据获取方法及装置 | |
CN103246525A (zh) | 一种实现应用运行的方法及客户端 | |
US20180046472A1 (en) | Method and system for customizing desktop launcher of mobile terminal | |
CN111752581A (zh) | 一种分布式系统的升级方法、装置和计算机系统 | |
CN114968406B (zh) | 一种插件管理方法、装置、电子设备及存储介质 | |
CN107908679B (zh) | 脚本语句转换方法、装置及计算机可读存储介质 | |
CN102567028B (zh) | 分离式菜单显示控制方法、装置及终端 | |
CN104598267A (zh) | 应用的调起方法及装置 | |
CN102375759B (zh) | 利用有限状态机防止代码重入的方法 | |
CN104598268A (zh) | 应用的处理方法及装置 | |
CN102819545A (zh) | 基于通用过滤条件复合组件的单据查询方法及装置 | |
CN102622213A (zh) | 一种生成一键升级工具系统及制作方法 | |
CN100485660C (zh) | 一种动画文件显示的方法和系统 | |
US10341451B2 (en) | Cloud oriented stream scheduling method based on android platform | |
CN112905072B (zh) | 应用程序的处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |