一種下載優(yōu)化方法及裝置、終端的制作方法
【專利摘要】本發(fā)明實施例公開了一種下載優(yōu)化方法及裝置、終端。其中,該方法包括:接收輸入的下載指令;響應(yīng)下載指令,創(chuàng)建讀線程和寫線程;調(diào)用讀線程將服務(wù)器發(fā)送的多個數(shù)據(jù)寫入緩沖區(qū);調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。本發(fā)明實施例中,在緩沖區(qū)不為滿且不為空時,終端設(shè)備可以同時通過讀線程和寫線程將下載指令指示的下載地址信息對應(yīng)的服務(wù)器發(fā)送的數(shù)據(jù)寫入到本地文件,從而充分利用帶寬,加快了下載的速率。
【專利說明】一種下載優(yōu)化方法及裝置、終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,具體涉及一種下載優(yōu)化方法及裝置、終端。
【背景技術(shù)】
[0002]目前,隨著智能手機、平板電腦等接入網(wǎng)絡(luò)的終端設(shè)備越來越普及,網(wǎng)絡(luò)上出現(xiàn)了各種各樣可安裝在終端設(shè)備上的應(yīng)用軟件,這些應(yīng)用軟件的安裝和應(yīng)用大多需要接入網(wǎng)絡(luò)獲取數(shù)據(jù),從而給人們的工作和生活帶來諸多便利。在實際應(yīng)用中,終端設(shè)備接入網(wǎng)絡(luò)獲取數(shù)據(jù)時,常常耗時較長,尤其是在2G或3G的網(wǎng)絡(luò)環(huán)境下,下載過程不僅耗時長,還易出現(xiàn)網(wǎng)絡(luò)異常現(xiàn)象,導(dǎo)致下載失敗,因此,如何改善下載效率是亟待解決的問題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實施例公開了一種下載優(yōu)化方法及裝置、終端,通過讀線程和寫線程并行處理數(shù)據(jù),從而充分利用帶寬,提高下載效率。
[0004]本發(fā)明實施例第一方面公開了一種下載優(yōu)化方法,包括:
[0005]接收輸入的下載指令,其中,所述下載指令中包括下載地址信息;
[0006]響應(yīng)所述下載指令,創(chuàng)建讀線程和寫線程;
[0007]調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū),其中,所述服務(wù)器與所述下載地址信息相對應(yīng);
[0008]調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0009]其中,所述通過所述讀線程將所述下載地址對應(yīng)的服務(wù)器發(fā)送的多個數(shù)據(jù)分別寫入緩沖區(qū)之前,所述方法還包括:
[0010]檢測所述緩沖區(qū)的存儲狀態(tài),
[0011]當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)不為滿時,執(zhí)行調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的步驟;
[0012]當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)不為空時,執(zhí)行調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的步驟。
[0013]可選地,所述方法還包括:
[0014]當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)為滿時,暫停所述讀線程以使所述讀線程處于阻塞狀態(tài),
[0015]并在暫停所述讀線程之后執(zhí)行檢測所述緩沖區(qū)的存儲狀態(tài)的步驟。
[0016]其中,所述方法還包括:
[0017]當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)為空時,暫停所述寫線程以使所述寫線程處于阻塞狀態(tài),
[0018]并在暫停所述寫線程之后執(zhí)行檢測所述緩沖區(qū)的存儲狀態(tài)的步驟。
[0019]其中,所述調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)包括:
[0020]調(diào)用所述讀線程接收所述服務(wù)器發(fā)送的數(shù)據(jù);
[0021]將接收的所述數(shù)據(jù)劃分為多個數(shù)據(jù)單元;
[0022]將所述多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則寫入所述緩沖區(qū)。
[0023]其中,所述調(diào)用所述寫線程將所述緩沖區(qū)的數(shù)據(jù)寫入本地文件包括:
[0024]調(diào)用所述寫線程,根據(jù)第二預(yù)設(shè)規(guī)則將所述緩沖區(qū)中的所述多個數(shù)據(jù)單元寫入本地文件。
[0025]本發(fā)明實施例第二方面公開了一種下載優(yōu)化裝置,包括:
[0026]接收模塊,用于接收輸入的下載指令,其中,所述下載指令中包括下載地址信息;
[0027]創(chuàng)建模塊,用于響應(yīng)所述接收模塊接收的下載指令,創(chuàng)建讀線程和寫線程;
[0028]讀線程模塊,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的讀線程將服務(wù)器發(fā)送的多個數(shù)據(jù)寫入緩沖區(qū),其中,所述服務(wù)器與所述下載地址信息相對應(yīng);
[0029]寫線程模塊,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0030]可選地,所述裝置還包括:
[0031]檢測模塊,用于檢測所述緩沖區(qū)的存儲狀態(tài),并在檢測到所述緩沖區(qū)的存儲狀態(tài)不為滿時,觸發(fā)所述讀線程模塊執(zhí)行所述的調(diào)用所述創(chuàng)建模塊創(chuàng)建的讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的操作,以及在檢測到所述緩沖區(qū)的存儲狀態(tài)不為空時,觸發(fā)所述寫線程模塊執(zhí)行所述的調(diào)用所述創(chuàng)建模塊創(chuàng)建的寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的操作。
[0032]可選地,所述裝置還包括:
[0033]讀線程暫停模塊,用于在所述檢測模塊檢測到所述緩沖區(qū)為滿時,暫停所述讀線程以使所述讀線程處于阻塞狀態(tài),并在暫停所述讀線程之后,觸發(fā)所述檢測模塊執(zhí)行所述的檢測所述緩沖區(qū)的存儲狀態(tài)的操作。
[0034]可選地,所述裝置還包括:
[0035]寫線程暫停模塊,用于在所述檢測模塊檢測到所述緩沖區(qū)的存儲狀態(tài)為空時,暫停所述寫線程以使所述寫線程處于阻塞狀態(tài),并在暫停所述寫線程之后觸發(fā)所述檢測模塊執(zhí)行所述的檢測所述緩沖區(qū)的存儲狀態(tài)的操作。
[0036]其中,所述讀線程模塊包括:
[0037]接收單元,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的讀線程接收所述服務(wù)器發(fā)送的數(shù)據(jù);
[0038]寫入單元,用于將所述接收單元接收的所述數(shù)據(jù)劃分為多個數(shù)據(jù)單元,并將所述多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則寫入所述緩沖區(qū)。
[0039]其中,所述寫線程模塊具體用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的寫線程,根據(jù)第二預(yù)設(shè)規(guī)則將所述緩沖區(qū)中的所述多個數(shù)據(jù)單元寫入本地文件。
[0040]本發(fā)明實施例第三方面公開一種終端,該終端包括上述發(fā)明實施例所述的裝置。
[0041]本發(fā)明實施例可以接收并響應(yīng)下載指令,可以創(chuàng)建讀線程和寫線程,并調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū),其中服務(wù)器與下載地址信息相對應(yīng),同時,還可以調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)寫入本地文件??梢姡景l(fā)明實施例可以同時通過讀線程和寫線程的運行將下載地址對應(yīng)的服務(wù)器發(fā)送來的數(shù)據(jù)寫入到本地文件,從而充分利用帶寬,加快了下載的速率。
【專利附圖】
【附圖說明】
[0042]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]圖1是本發(fā)明實施例公開的一種下載優(yōu)化方法的流程示意圖;
[0044]圖2是本發(fā)明實施例公開的另一種下載優(yōu)化方法的流程示意圖;
[0045]圖3是本發(fā)明實施例公開的一種下載優(yōu)化裝置的結(jié)構(gòu)示意圖;
[0046]圖4是本發(fā)明實施例公開的另一種下載優(yōu)化裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0047]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0048]本發(fā)明實施例公開了一種下載優(yōu)化方法及裝置、終端,能夠通過讀線程和寫線程并行處理數(shù)據(jù),從而充分利用帶寬,提高下載效率。以下分別進行詳細(xì)說明。
[0049]請參閱圖1,圖1是本發(fā)明實施例公開的一種下載優(yōu)化方法的流程示意圖。如圖1所示,該下載優(yōu)化方法可以包括以下步驟。
[0050]S101、接收輸入的下載指令,其中,該下載指令中包括下載地址信息。
[0051]本發(fā)明實施例中,可以由智能手機、電腦、電視以及可接入網(wǎng)絡(luò)設(shè)備等需執(zhí)行下載任務(wù)的終端設(shè)備來接收輸入的下載指令。其中,輸入下載指令的方式可以有多種,如通過顯示屏點擊或者輸入下載地址或者通過語音輸入關(guān)鍵詞等。
[0052]S102、響應(yīng)下載指令,創(chuàng)建讀線程和寫線程。
[0053]本發(fā)明實施例中,終端設(shè)備接收針對下載地址輸入的下載指令時,可以響應(yīng)該下載指令,創(chuàng)建讀線程和寫線程。
[0054]S103、調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)分別寫入緩沖區(qū),其中,該服務(wù)器與該下載地址信息相對應(yīng)。
[0055]其中,讀線程可以根據(jù)下載地址信息中包括的下載地址建立與服務(wù)器之間的網(wǎng)絡(luò)連接,并創(chuàng)建緩沖區(qū),以使步驟S103從網(wǎng)絡(luò)連接讀取下載地址對應(yīng)的服務(wù)器發(fā)送的多個數(shù)據(jù)并寫入緩沖區(qū)。
[0056]S104、調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0057]本發(fā)明實施例中,終端設(shè)備可以并行循環(huán)執(zhí)行步驟S103和步驟S104。由于緩沖區(qū)采用隊列方式處理數(shù)據(jù),因此終端設(shè)備執(zhí)行步驟S103和步驟S104時,采用先進先出的方式處理緩沖區(qū)中緩沖的數(shù)據(jù)。
[0058]具體地,在調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)之前,還可以執(zhí)行以下步驟:
[0059]11)檢測緩沖區(qū)的存儲狀態(tài);
[0060]12)當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)不為滿時,執(zhí)行步驟S103 ;
[0061]13)當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)不為空時,執(zhí)行步驟S104 ;
[0062]14)當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)為滿時,暫停該讀線程以使讀線程處于阻塞狀態(tài),并執(zhí)行步驟11);
[0063]15)當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)為空時,暫停該寫線程以使寫線程處于阻塞狀態(tài),并執(zhí)行步驟11)。
[0064]其中,線程是進程中的一個實體,是被終端設(shè)備獨立調(diào)度和分派的基本單元,而線程自己不擁有處理資源,只擁有運行中必不可少的資源,但線程可以與其他屬于同一個進程的其他線程共享進程的全部資源。因此,多個線程之間可以并發(fā)執(zhí)行,且相互制約,使線程在運行中呈現(xiàn)間斷性。
[0065]讀線程和寫線程均有兩種狀態(tài):阻塞狀態(tài)和運行狀態(tài)。
[0066]當(dāng)讀線程處于阻塞狀態(tài),即暫停調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)時,終端設(shè)備可以執(zhí)行一次調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的操作,就可以通過寫線程激活讀線程以使讀線程處于運行狀態(tài),即終端設(shè)備繼續(xù)執(zhí)行調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的操作。因為調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件后,緩沖區(qū)中被檢測到具有空閑的空間可以繼續(xù)往里讀入數(shù)據(jù),因此,讀線程可以繼續(xù)運行了。
[0067]當(dāng)寫線程處于阻塞狀態(tài),即暫停調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件時,終端設(shè)備可以執(zhí)行一次調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)之后,就可以通過讀線程激活寫線程以使寫線程處于運行狀態(tài),即終端設(shè)備可以繼續(xù)執(zhí)行調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的步驟。因為調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)后,緩沖區(qū)中重新被檢測到有新增的數(shù)據(jù)可以被寫入本地文件,因此,寫線程可以繼續(xù)運行了。
[0068]本發(fā)明中,檢測緩沖區(qū)的存儲狀態(tài)的步驟是不斷循環(huán)進行的,也就是說,當(dāng)讀線程或者寫線程處于阻塞狀態(tài)后,一旦有需要,很快可以被調(diào)起重新工作,提高了讀線程與寫線程的工作效率。
[0069]具體地,終端設(shè)備調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)具體可以包括以下步驟:
[0070]21)調(diào)用讀線程接收服務(wù)器發(fā)送的數(shù)據(jù);
[0071]22)將接收的數(shù)據(jù)劃分為多個數(shù)據(jù)單元;
[0072]23)將多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則寫入緩沖區(qū)。
[0073]其中,第一預(yù)設(shè)規(guī)則可以根據(jù)緩沖區(qū)的管理辦法確定,如若緩沖區(qū)采用先進先出原則,則終端設(shè)備可以調(diào)用讀線程按照先進先出原則將多個數(shù)據(jù)單元寫入緩沖區(qū),或者調(diào)用寫線程按照先進先出原則將多個數(shù)據(jù)單元中的數(shù)據(jù)寫入本地文件。
[0074]相應(yīng)地,終端設(shè)備調(diào)用寫線程將緩沖區(qū)的數(shù)據(jù)寫入本地文件具體可以為調(diào)用寫線程根據(jù)第二預(yù)設(shè)規(guī)則將緩沖區(qū)緩沖的多個數(shù)據(jù)單元的數(shù)據(jù)寫入本地文件,其中,該第二預(yù)設(shè)規(guī)則可以根據(jù)第一預(yù)設(shè)規(guī)則確定,如先進先出的將緩沖區(qū)緩沖的數(shù)據(jù)單元一一寫入本地文件。
[0075]在圖1所描述的方法中,終端設(shè)備接收到輸入的下載指令時,可以創(chuàng)建讀線程和寫線程;終端設(shè)備可以通過讀線程從下載地址信息對應(yīng)的服務(wù)器接收數(shù)據(jù),并寫入緩沖區(qū),同時,終端設(shè)備可以調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)一一寫入本地文件??梢姡瑘D1所描述的方法中在緩沖區(qū)有數(shù)據(jù)且有可用緩存空間時,終端設(shè)備可以同時調(diào)用讀線程和寫線程將下載地址對應(yīng)的服務(wù)器的數(shù)據(jù)寫入到本地文件,從而充分利用帶寬,加快了下載的速率。
[0076]請參閱圖2,圖2是本發(fā)明實施例公開的另一種下載優(yōu)化方法的流程示意圖。如圖2所示,該下載優(yōu)化方法可以包括以下步驟。
[0077]S201、接收輸入的下載指令。
[0078]其中,該下載指令中包括下載地址信息。
[0079]S202、響應(yīng)下載指令,創(chuàng)建讀線程和寫線程。
[0080]S203、檢測緩沖區(qū)的存儲狀態(tài),當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)不為滿時,執(zhí)行步驟S204 ;當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)不為空時,執(zhí)行步驟S205 ;同時,當(dāng)檢測到該緩沖區(qū)的存儲狀態(tài)為滿時,除執(zhí)行步驟S205外,還可以執(zhí)行步驟S206 ;當(dāng)檢測該緩沖區(qū)的存儲狀態(tài)為空時,除執(zhí)行步驟S204外,還可以執(zhí)行步驟S207。
[0081]S204、調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)。
[0082]相應(yīng)地,終端設(shè)備執(zhí)行完步驟S204之后,可以繼續(xù)執(zhí)行步驟S203檢測緩沖區(qū)的存儲狀態(tài)。
[0083]其中,該服務(wù)器與下載地址信息中的下載地址相對應(yīng),從該服務(wù)器可以接收該下載地址對應(yīng)的目標(biāo)文件的數(shù)據(jù)。
[0084]可選地,終端設(shè)備執(zhí)行步驟S204可以包括步驟21)至步驟23)。
[0085]其中,若讀線程處于阻塞狀態(tài),則終端設(shè)備調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)具體可以為:通過寫線程激活讀線程使讀線程處于運行狀態(tài),并將服務(wù)器發(fā)送的多個數(shù)據(jù)寫入緩沖區(qū)。
[0086]S205、調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0087]可選地,終端設(shè)備執(zhí)行步驟S205具體可以為調(diào)用寫線程根據(jù)第二預(yù)設(shè)規(guī)則將緩沖區(qū)緩沖的多個數(shù)據(jù)單元中的數(shù)據(jù)寫入本地文件。
[0088]其中,若寫線程處于阻塞狀態(tài),則終端設(shè)備調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件具體可以為:通過讀線程激活寫線程使寫線程處于運行狀態(tài),并將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0089]S206、暫停讀線程以使讀線程處于阻塞狀態(tài),并在暫停該讀線程之后,繼續(xù)執(zhí)行步驟 S203 ;
[0090]S207、暫停寫線程以使寫線程處于阻塞狀態(tài),并在暫停寫線程之后執(zhí)行步驟S203。
[0091]需要注意的是,本發(fā)明實施例的方案是在獲取下載地址對應(yīng)的目標(biāo)文件的過程中的處理步驟,而當(dāng)下載地址對應(yīng)的目標(biāo)文件的數(shù)據(jù)已全部從服務(wù)器下載完畢后,終端設(shè)備會分別暫停讀線程和寫線程,并且釋放讀線程和寫線程擁有的資源。
[0092]在圖2所描述的方法中,終端設(shè)備創(chuàng)建讀線程和寫線程后,檢測緩沖區(qū)的存儲狀態(tài),可以在緩沖區(qū)不為滿時,調(diào)用讀線程將下載地址對應(yīng)的服務(wù)器發(fā)送的多個數(shù)據(jù)分別寫入緩沖區(qū);或者在緩沖區(qū)不為空時,調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件,本發(fā)明實施例可以在接收服務(wù)器發(fā)送的數(shù)據(jù)的同時,將緩沖區(qū)的數(shù)據(jù)寫入本地文件,充分利用帶寬,提高了下載效率。進一步地,當(dāng)緩沖區(qū)已滿時,可以暫停讀線程以停止向緩沖區(qū)寫數(shù)據(jù)的操作,并在寫線程執(zhí)行一次將緩沖區(qū)中的數(shù)據(jù)寫入本地文件的操作(即緩沖區(qū)不為滿)時,就會激活讀線程繼續(xù)往緩沖區(qū)寫數(shù)據(jù);而當(dāng)緩沖區(qū)為空時,會暫停寫線程以停止讀取緩沖區(qū)的數(shù)據(jù)的操作,并在讀線程執(zhí)行一次將服務(wù)器發(fā)送的數(shù)據(jù)寫入緩沖區(qū)的操作后(即緩沖區(qū)不為空時),就可以通過讀線程激活寫線程繼續(xù)將緩沖區(qū)的數(shù)據(jù)寫入本地文件,從而可以使讀線程和寫線程在沒有數(shù)據(jù)處理時及時暫停,在有數(shù)據(jù)時可以一直運行,降低了終端設(shè)備的處理負(fù)擔(dān)。
[0093]請參閱圖3,圖3是本發(fā)明實施例公開的一種下載優(yōu)化裝置的結(jié)構(gòu)示意圖。其中,圖3所示的下載優(yōu)化裝置中包括以下模塊。
[0094]接收模塊1,用于接收輸入的下載指令。
[0095]其中,下載指令中包括下載地址信息。
[0096]創(chuàng)建模塊2,用于響應(yīng)接收模塊I接收的下載指令,創(chuàng)建讀線程和寫線程;
[0097]讀線程模塊3,用于調(diào)用創(chuàng)建模塊2創(chuàng)建的讀線程將服務(wù)器發(fā)送的多個數(shù)據(jù)寫入緩沖區(qū),其中,該服務(wù)器與下載地址信息相對應(yīng);
[0098]寫線程模塊4,用于調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
[0099]其中,下載地址信息對應(yīng)的服務(wù)器發(fā)送的多個數(shù)據(jù)是指下載地址信息所請求的目標(biāo)文件的數(shù)據(jù)。
[0100]請一并參閱圖4,圖4是本發(fā)明實施例公開的另一種下載優(yōu)化裝置的結(jié)構(gòu)示意圖。其中,圖4所示的下載優(yōu)化裝置是由圖3所示的下載優(yōu)化裝置進行優(yōu)化得到的。與圖3所示的裝置相比較,圖4所示的下載優(yōu)化裝置還可以包括:
[0101]檢測模塊5,用于檢測緩沖區(qū)的存儲狀態(tài),并在檢測到所述緩沖區(qū)的存儲狀態(tài)不為滿時,觸發(fā)讀線程模塊3執(zhí)行調(diào)用讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的操作,以及在檢測到緩沖區(qū)的存儲狀態(tài)不為空時,觸發(fā)寫線程模塊4執(zhí)行調(diào)用寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的操作。
[0102]相應(yīng)地,讀線程模塊3和寫線程模塊4可以在執(zhí)行一次相應(yīng)的操作后,可以觸發(fā)檢測模塊5檢測緩沖區(qū)的存儲狀態(tài),若該存儲狀態(tài)不為空且不為滿,則讀線程模塊3和寫線程模塊4可以同時執(zhí)行相應(yīng)的操作。
[0103]為了避免讀線程將服務(wù)器發(fā)送的數(shù)據(jù)寫入緩沖區(qū)的速度大于寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的速度,而導(dǎo)致緩沖區(qū)數(shù)據(jù)溢出,圖4所示的下載優(yōu)化裝置還可以包括讀線程暫停模塊6。
[0104]讀線程暫停模塊6,用于在檢測模塊5檢測到緩沖區(qū)為滿時,暫停讀線程以使讀線程處于阻塞狀態(tài),并在暫停讀線程之后,觸發(fā)檢測模塊5執(zhí)行檢測緩沖區(qū)的存儲狀態(tài)的操作。
[0105]相應(yīng)地,為避免讀線程將服務(wù)器發(fā)送的數(shù)據(jù)寫入緩沖區(qū)的速度小于寫線程將緩沖區(qū)緩沖的多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的速度,而導(dǎo)致緩沖區(qū)沒有數(shù)據(jù)時,寫線程還繼續(xù)執(zhí)行寫入本地文件的操作,圖4所示的下載優(yōu)化裝置還可以包括寫線程暫停模塊7。
[0106]寫線程暫停模塊7,用于在檢測模塊5檢測到所述緩沖區(qū)的存儲狀態(tài)為空時,暫停寫線程以使寫線程處于阻塞狀態(tài),并在暫停寫線程之后觸發(fā)檢測模塊5執(zhí)行檢測緩沖區(qū)的存儲狀態(tài)的操作。
[0107]另外,在圖4所示的下載優(yōu)化裝置中,讀線程模塊3還可以包括以下單元:
[0108]接收單元31,用于調(diào)用讀線程接收服務(wù)器發(fā)送的數(shù)據(jù);
[0109]具體地,接收單元31用于在檢測模塊5檢測到緩沖區(qū)的存儲狀態(tài)不為滿時,調(diào)用讀線程接收服務(wù)器發(fā)送的數(shù)據(jù)。
[0110]寫入單元32,用于將接收單元31接收的數(shù)據(jù)劃分為多個數(shù)據(jù)單元,并將多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則(如先入先出規(guī)則)寫入緩沖區(qū)。
[0111]另外,在本發(fā)明實施例中,寫線程模塊4具體用于調(diào)用寫線程,根據(jù)第二預(yù)設(shè)規(guī)則(如先入先出規(guī)則)將緩沖區(qū)中緩沖的多個數(shù)據(jù)單元寫入本地文件。
[0112]在圖3和圖4所描述的下載優(yōu)化裝置中,可以利用讀線程和寫線程將服務(wù)器發(fā)送的數(shù)據(jù)寫入本地文件的操作,充分利用了帶寬,提高了下載處理效率;進一步地,在圖4所描述的下載優(yōu)化裝置中,可以使讀線程和寫線程在沒有數(shù)據(jù)處理時及時暫停,在有數(shù)據(jù)時可以一直運行,降低了終端設(shè)備的處理負(fù)擔(dān)。
[0113]本發(fā)明實施例還公開了一種終端,該終端包括圖3和圖4對應(yīng)的實施例所述描述的下載優(yōu)化裝置,該終端可以充分利用帶寬,提高下載處理效率,進一步的降低終端設(shè)備的處理負(fù)擔(dān)。
[0114]在本說明書的描述中,參考術(shù)語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。
[0115]此外,術(shù)語“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個該特征。在本發(fā)明的描述中,“多個”的含義是至少兩個,例如兩個,三個等,除非另有明確具體的限定。
[0116]流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實施例所屬【技術(shù)領(lǐng)域】的技術(shù)人員所理解。
[0117]在流程圖中表示或在此以其他方式描述的邏輯和/或步驟,例如,可以被認(rèn)為是用于實現(xiàn)邏輯功能的可執(zhí)行指令的定序列表,可以具體實現(xiàn)在任何計算機可讀介質(zhì)中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(如基于計算機的系統(tǒng)、包括處理器的系統(tǒng)或其他可以從指令執(zhí)行系統(tǒng)、裝置或設(shè)備取指令并執(zhí)行指令的系統(tǒng))使用,或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用。就本說明書而言,"計算機可讀介質(zhì)"可以是任何可以包含、存儲、通信、傳播或傳輸程序以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備或結(jié)合這些指令執(zhí)行系統(tǒng)、裝置或設(shè)備而使用的裝置。計算機可讀介質(zhì)的更具體的示例(非窮盡性列表)包括以下:具有一個或多個布線的電連接部(電子裝置),便攜式計算機盤盒(磁裝置),隨機存取存儲器(RAM),只讀存儲器(R0M),可擦除可編輯只讀存儲器(EPR0M或閃速存儲器),光纖裝置,以及便攜式光盤只讀存儲器(⑶ROM)。另外,計算機可讀介質(zhì)甚至可以是可在其上打印所述程序的紙或其他合適的介質(zhì),因為可以例如通過對紙或其他介質(zhì)進行光學(xué)掃描,接著進行編輯、解譯或必要時以其他合適方式進行處理來以電子方式獲得所述程序,然后將其存儲在計算機存儲器中。
[0118]應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場可編程門陣列(FPGA)等。
[0119]本【技術(shù)領(lǐng)域】的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
[0120]此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質(zhì)中。
[0121 ] 上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。盡管上面已經(jīng)示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實施例進行變化、修改、替換和變型。
[0122]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
[0123]以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種下載優(yōu)化方法,其特征在于,包括: 接收輸入的下載指令,其中,所述下載指令中包括下載地址信息; 響應(yīng)所述下載指令,創(chuàng)建讀線程和寫線程; 調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū),其中,所述服務(wù)器與所述下載地址信息相對應(yīng); 調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
2.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)之前,所述方法還包括: 檢測所述緩沖區(qū)的存儲狀態(tài), 當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)不為滿時,執(zhí)行調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的步驟; 當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)不為空時,執(zhí)行調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的步驟。
3.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)為滿時,暫停所述讀線程以使所述讀線程處于阻塞狀態(tài), 并在暫停所述讀線程之后執(zhí)行檢測所述緩沖區(qū)的存儲狀態(tài)的步驟。
4.如權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 當(dāng)檢測到所述緩沖區(qū)的存儲狀態(tài)為空時,暫停所述寫線程以使所述寫線程處于阻塞狀態(tài), 并在暫停所述寫線程之后執(zhí)行檢測所述緩沖區(qū)的存儲狀態(tài)的步驟。
5.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)包括: 調(diào)用所述讀線程接收所述服務(wù)器發(fā)送的數(shù)據(jù); 將接收的所述數(shù)據(jù)劃分為多個數(shù)據(jù)單元; 將所述多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則寫入所述緩沖區(qū)。
6.如權(quán)利要求5所述的方法,其特征在于,所述調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件包括: 調(diào)用所述寫線程,根據(jù)第二預(yù)設(shè)規(guī)則將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)單元中的數(shù)據(jù)寫入本地文件。
7.一種下載優(yōu)化裝置,其特征在于,包括: 接收模塊,用于接收輸入的下載指令,其中,所述下載指令中包括下載地址信息; 創(chuàng)建模塊,用于響應(yīng)所述接收模塊接收的下載指令,創(chuàng)建讀線程和寫線程; 讀線程模塊,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的讀線程將服務(wù)器發(fā)送的多個數(shù)據(jù)寫入緩沖區(qū),其中,所述服務(wù)器與所述下載地址信息相對應(yīng); 寫線程模塊,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件。
8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 檢測模塊,用于檢測所述緩沖區(qū)的存儲狀態(tài),并在檢測到所述緩沖區(qū)的存儲狀態(tài)不為滿時,觸發(fā)所述讀線程模塊執(zhí)行所述的調(diào)用所述讀線程將服務(wù)器發(fā)送來的多個數(shù)據(jù)寫入緩沖區(qū)的操作,以及在檢測到所述緩沖區(qū)的存儲狀態(tài)不為空時,觸發(fā)所述寫線程模塊執(zhí)行所述的調(diào)用所述寫線程將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)中的數(shù)據(jù)寫入本地文件的操作。
9.如權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 讀線程暫停模塊,用于在所述檢測模塊檢測到所述緩沖區(qū)為滿時,暫停所述讀線程以使所述讀線程處于阻塞狀態(tài),并在暫停所述讀線程之后,觸發(fā)所述檢測模塊執(zhí)行所述的檢測所述緩沖區(qū)的存儲狀態(tài)的操作。
10.如權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括: 寫線程暫停模塊,用于在所述檢測模塊檢測到所述緩沖區(qū)的存儲狀態(tài)為空時,暫停所述寫線程以使所述寫線程處于阻塞狀態(tài),并在暫停所述寫線程之后觸發(fā)所述檢測模塊執(zhí)行所述的檢測所述緩沖區(qū)的存儲狀態(tài)的操作。
11.如權(quán)利要求7所述的裝置,其特征在于,所述讀線程模塊包括: 接收單元,用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的讀線程接收所述服務(wù)器發(fā)送的數(shù)據(jù); 寫入單元,用于將所述接收單元接收的所述數(shù)據(jù)劃分為多個數(shù)據(jù)單元,并將所述多個數(shù)據(jù)單元根據(jù)第一預(yù)設(shè)規(guī)則寫入所述緩沖區(qū)。
12.如權(quán)利要求11所述的裝置,其特征在于,所述寫線程模塊具體用于調(diào)用所述創(chuàng)建模塊創(chuàng)建的寫線程,根據(jù)第二預(yù)設(shè)規(guī)則將所述緩沖區(qū)緩沖的所述多個數(shù)據(jù)單元中的數(shù)據(jù)寫入本地文件。
13.—種終端,其特征在于,所述終端包括權(quán)利要求7至11任一項所述的裝置。
【文檔編號】H04L29/08GK104184817SQ201410432715
【公開日】2014年12月3日 申請日期:2014年8月28日 優(yōu)先權(quán)日:2014年8月28日
【發(fā)明者】徐初標(biāo) 申請人:廣州金山網(wǎng)絡(luò)科技有限公司