本發(fā)明涉及流數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種進(jìn)程間傳遞流數(shù)據(jù)的方法以及一種進(jìn)程間傳遞流數(shù)據(jù)的裝置。
背景技術(shù):
流數(shù)據(jù)為可以采用流式傳輸?shù)姆绞皆诰W(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)。流數(shù)據(jù)在進(jìn)程間傳遞時(shí),負(fù)責(zé)播放流數(shù)據(jù)的進(jìn)程通過(guò)給負(fù)責(zé)獲取流數(shù)據(jù)的進(jìn)程發(fā)送獲取指令,以使負(fù)責(zé)獲取流數(shù)據(jù)的進(jìn)程在獲取到流數(shù)據(jù)后,將流數(shù)據(jù)反饋回來(lái)。
實(shí)際應(yīng)用中,負(fù)責(zé)獲取流數(shù)據(jù)的進(jìn)程通過(guò)定位指針可以定位到負(fù)責(zé)播放流數(shù)據(jù)的進(jìn)程。如果負(fù)責(zé)播放流數(shù)據(jù)的進(jìn)程被關(guān)閉,而負(fù)責(zé)獲取流數(shù)據(jù)的進(jìn)程通過(guò)定位指針定位時(shí),此時(shí)由于定位指針已經(jīng)不合法,內(nèi)存中相應(yīng)的位置已經(jīng)不是分配給負(fù)責(zé)播放流數(shù)據(jù)的進(jìn)程,負(fù)責(zé)獲取流數(shù)據(jù)的進(jìn)程如果將流數(shù)據(jù)根據(jù)定位指針?lè)答伨蜁?huì)將流數(shù)據(jù)寫(xiě)入到錯(cuò)誤的內(nèi)存中,導(dǎo)致訪(fǎng)問(wèn)非法內(nèi)存位置,甚至程序崩潰。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種進(jìn)程間傳遞流數(shù)據(jù)的方法和相應(yīng)的裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種進(jìn)程間傳遞流數(shù)據(jù)的方法,包括:
接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,所述流獲取指示攜帶針對(duì)所述流播放進(jìn)程的定位指針,所述定位指針攜帶針對(duì)所述流播放進(jìn)程的進(jìn)程狀態(tài)標(biāo)識(shí),在監(jiān)控到所述流播放進(jìn)程結(jié)束時(shí),所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉;
獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù);
判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉;
按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù)。
可選地,所述方法還包括:
若判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值指示進(jìn)程關(guān)閉,則不執(zhí)行按照所述定位指針定位所述流播放進(jìn)程以及將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
可選地,所述進(jìn)程狀態(tài)標(biāo)識(shí)在所述流播放進(jìn)程創(chuàng)建時(shí),對(duì)所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予第一數(shù)值,在所述流播放進(jìn)程結(jié)束時(shí),通過(guò)運(yùn)算操作變更為第二數(shù)值;
所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉包括:
識(shí)別所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定所述進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉。
可選地,所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉的步驟,在每次向流播放進(jìn)程傳遞目標(biāo)流數(shù)據(jù)的數(shù)據(jù)包時(shí)執(zhí)行;
在執(zhí)行所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,在本次傳輸完數(shù)據(jù)包之后變更回第一數(shù)值;
所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉包括:
判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值。
可選地,所述流獲取指示攜帶所述流播放進(jìn)程針對(duì)流獲取進(jìn)程創(chuàng)建的回調(diào)函數(shù),所述將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程包括:
執(zhí)行所述回調(diào)函數(shù),由所述回調(diào)函數(shù)將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
可選地,所述獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)包括:
與存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)建立連接;
按照所述定位指針定位所述流播放進(jìn)程,向所述流播放進(jìn)程發(fā)送連接建立的通知;
從所述傳輸節(jié)點(diǎn)獲取目標(biāo)流數(shù)據(jù)。
可選地,所述獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)包括:
獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的云端存儲(chǔ)地址;
所述將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程包括:
根據(jù)所述云端存儲(chǔ)地址下載目標(biāo)流數(shù)據(jù)至本地,并將本地存儲(chǔ)地址傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程根據(jù)所述本地存儲(chǔ)地址獲取并播放目標(biāo)流數(shù)據(jù)。
依據(jù)本發(fā)明的另一個(gè)方面,提供了一種進(jìn)程間傳遞流數(shù)據(jù)的方法,包括:
根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針,所述流播放進(jìn)程通過(guò)創(chuàng)建流獲取進(jìn)程獲取目標(biāo)流數(shù)據(jù),所述流獲取進(jìn)程通過(guò)定位指針定位流播放進(jìn)程;
對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值;
在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
可選地,所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作包括:
接收用戶(hù)在流數(shù)據(jù)客戶(hù)端上從目標(biāo)流數(shù)據(jù)至其他流數(shù)據(jù)的播放切換操作,或,接收到用戶(hù)對(duì)目標(biāo)流數(shù)據(jù)的播放頁(yè)面的關(guān)閉操作,所述播放切換操作包括在目標(biāo)流數(shù)據(jù)的播放界面上按照設(shè)定方向的滑動(dòng)操作。
可選地,在所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作之后,所述方法還包括:
結(jié)束所述流播放進(jìn)程。
可選地,所述方法還包括:
通知內(nèi)存釋放所述流播放進(jìn)程的定位指針?biāo)加玫拇鎯?chǔ)空間。
可選地,在流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉之后,所述方法還包括:
通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,以由流獲取進(jìn)程在每次向流播放進(jìn)程傳遞流數(shù)據(jù)時(shí),根據(jù)進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值判定并非指示進(jìn)程關(guān)閉;
在流獲取進(jìn)程本次傳輸完數(shù)據(jù)包之后,所述方法還包括:
將進(jìn)程狀態(tài)標(biāo)識(shí)的值變更回第一數(shù)值。
依據(jù)本發(fā)明的另一個(gè)方面,提供了一種進(jìn)程間傳遞流數(shù)據(jù)的裝置,包括:
指示接收模塊,用于接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,所述流獲取指示攜帶針對(duì)所述流播放進(jìn)程的定位指針,所述定位指針攜帶針對(duì)所述流播放進(jìn)程的進(jìn)程狀態(tài)標(biāo)識(shí),在監(jiān)控到所述流播放進(jìn)程結(jié)束時(shí),所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉;
流數(shù)據(jù)獲取模塊,用于獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù);
狀態(tài)判定模塊,用于判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉;
流數(shù)據(jù)傳遞模塊,用于按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù)。
可選地,所述裝置還包括:
操作不執(zhí)行模塊,用于若判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值指示進(jìn)程關(guān)閉,則不執(zhí)行按照所述定位指針定位所述流播放進(jìn)程以及將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
可選地,所述進(jìn)程狀態(tài)標(biāo)識(shí)在所述流播放進(jìn)程創(chuàng)建時(shí),對(duì)所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予第一數(shù)值,在所述流播放進(jìn)程結(jié)束時(shí),通過(guò)運(yùn)算操作變更為第二數(shù)值;
所述狀態(tài)判定模塊包括:
第二數(shù)值識(shí)別子模塊,用于識(shí)別所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定所述進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉。
可選地,所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉的步驟,在每次向流播放進(jìn)程傳遞目標(biāo)流數(shù)據(jù)的數(shù)據(jù)包時(shí)執(zhí)行;
第三變更模塊,用于在執(zhí)行所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,在本次傳輸完數(shù)據(jù)包之后變更回第一數(shù)值;
所述狀態(tài)判定模塊包括:
值判定子模塊,用于判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值。
可選地,所述流獲取指示攜帶所述流播放進(jìn)程針對(duì)流獲取進(jìn)程創(chuàng)建的回調(diào)函數(shù),所述流數(shù)據(jù)傳遞模塊包括:
回調(diào)執(zhí)行子模塊,用于執(zhí)行所述回調(diào)函數(shù),由所述回調(diào)函數(shù)將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
可選地,所述流數(shù)據(jù)獲取模塊包括:
連接建立子模塊,用于與存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)建立連接;
通知子模塊,用于按照所述定位指針定位所述流播放進(jìn)程,向所述流播放進(jìn)程發(fā)送連接建立的通知;
流數(shù)據(jù)獲取子模塊,用于從所述傳輸節(jié)點(diǎn)獲取目標(biāo)流數(shù)據(jù)。
可選地,所述流數(shù)據(jù)獲取模塊包括:
云端地址獲取子模塊,用于獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的云端存儲(chǔ)地址;
所述流數(shù)據(jù)傳遞模塊包括:
地址傳遞子模塊,用于根據(jù)所述云端存儲(chǔ)地址下載目標(biāo)流數(shù)據(jù)至本地,并將本地存儲(chǔ)地址傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程根據(jù)所述本地存儲(chǔ)地址獲取并播放目標(biāo)流數(shù)據(jù)。
依據(jù)本發(fā)明的另一個(gè)方面,提供了一種進(jìn)程間傳遞流數(shù)據(jù)的裝置,包括:
進(jìn)程創(chuàng)建模塊,用于根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針,所述流播放進(jìn)程通過(guò)創(chuàng)建流獲取進(jìn)程獲取目標(biāo)流數(shù)據(jù),所述流獲取進(jìn)程通過(guò)定位指針定位流播放進(jìn)程;
狀態(tài)標(biāo)識(shí)添加模塊,用于對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值;
狀態(tài)標(biāo)識(shí)變更模塊,用于在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
可選地,所述狀態(tài)標(biāo)識(shí)變更模塊包括:
操作接收子模塊,用于接收用戶(hù)在流數(shù)據(jù)客戶(hù)端上從目標(biāo)流數(shù)據(jù)至其他流數(shù)據(jù)的播放切換操作,或,接收到用戶(hù)對(duì)目標(biāo)流數(shù)據(jù)的播放頁(yè)面的關(guān)閉操作,所述播放切換操作包括在目標(biāo)流數(shù)據(jù)的播放界面上按照設(shè)定方向的滑動(dòng)操作。
可選地,所述裝置還包括:
進(jìn)程結(jié)束模塊,用于在所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作之后,結(jié)束所述流播放進(jìn)程。
可選地,所述裝置還包括:
空間釋放模塊,用于通知內(nèi)存釋放所述流播放進(jìn)程的定位指針?biāo)加玫拇鎯?chǔ)空間。
可選地,所述裝置還包括:
第三變更操作模塊,用于在流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,以由流獲取進(jìn)程在每次向流播放進(jìn)程傳遞流數(shù)據(jù)時(shí),根據(jù)進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值判定并非指示進(jìn)程關(guān)閉;
所述裝置還包括:
第一變更模塊,用于在流獲取進(jìn)程本次傳輸完數(shù)據(jù)包之后,將進(jìn)程狀態(tài)標(biāo)識(shí)的值變更回第一數(shù)值。
根據(jù)本發(fā)明的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的裝置,通過(guò)接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù),判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù),使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明實(shí)施例一的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖;
圖2示出了根據(jù)本發(fā)明實(shí)施例二的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖;
圖3示出了根據(jù)本發(fā)明實(shí)施例三的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖;
圖4示出了根據(jù)本發(fā)明實(shí)施例四的一種進(jìn)程間傳遞流數(shù)據(jù)的裝置的結(jié)構(gòu)框圖;
圖5示出了根據(jù)本發(fā)明實(shí)施例五的一種進(jìn)程間傳遞流數(shù)據(jù)的裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
參照?qǐng)D1,示出了根據(jù)本發(fā)明實(shí)施例一的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖,具體可以包括如下步驟:
步驟101,接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示。
在本發(fā)明實(shí)施例中,流播放進(jìn)程為用于播放視頻流的進(jìn)程,具體負(fù)責(zé)流數(shù)據(jù)的播放展示、刷新頁(yè)面等。流獲取進(jìn)程為用于獲取視頻流的進(jìn)程,具體負(fù)責(zé)建立連接,接收流數(shù)據(jù)等。流獲取指示為針對(duì)流數(shù)據(jù)的獲取指示,流播放進(jìn)程傳遞給流獲取進(jìn)程,流獲取進(jìn)程接收流獲取指示。其中,流數(shù)據(jù)為可以采用流式傳輸?shù)姆绞皆诰W(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)。
流獲取指示攜帶針對(duì)所述流播放進(jìn)程的定位指針,所述定位指針攜帶針對(duì)所述流播放進(jìn)程的進(jìn)程狀態(tài)標(biāo)識(shí),在監(jiān)控到所述流播放進(jìn)程結(jié)束時(shí),所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉。其中,定位指針是指可以定位進(jìn)程運(yùn)行位置的內(nèi)存地址,流獲取指示攜帶針對(duì)流播放進(jìn)程的定位指針。進(jìn)程狀態(tài)標(biāo)識(shí)為可以指示進(jìn)程是否關(guān)閉的標(biāo)識(shí),定位指針攜帶對(duì)流播放進(jìn)程的進(jìn)程狀態(tài)標(biāo)識(shí),在監(jiān)控到流播放進(jìn)程結(jié)束時(shí),定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,例如進(jìn)程狀態(tài)標(biāo)識(shí)的值為零時(shí),指示進(jìn)程關(guān)閉。
步驟102,獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)。
在本發(fā)明實(shí)施例中,流獲取指示中包含有對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的標(biāo)識(shí),獲取流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù),具體為根據(jù)流獲取指示,與目標(biāo)流數(shù)據(jù)所在節(jié)點(diǎn)建立連接,將目標(biāo)流數(shù)據(jù)獲取到流獲取進(jìn)程。
步驟103,判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉。
在本發(fā)明實(shí)施例中,對(duì)定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值進(jìn)行判斷,根據(jù)取值判斷是否指示進(jìn)程關(guān)閉,如果定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為特定值,而且該特定值指示進(jìn)程并未關(guān)閉。具體特征值可以任意適用的值,本實(shí)施例對(duì)此不做限制。如果定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為特定值,則判定定位指針攜帶的進(jìn)程狀態(tài)的值并非指示進(jìn)程關(guān)閉。
步驟104,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù)。
在本發(fā)明實(shí)施例中,按照定位指針可以找到流播放進(jìn)程的運(yùn)行位置,具體為內(nèi)存中地址,也就是可以定位到流播放進(jìn)程,流獲取進(jìn)程將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供流播放進(jìn)程播放目標(biāo)流數(shù)據(jù)。
綜上所述,依據(jù)本發(fā)明實(shí)施例,通過(guò)接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù),判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù),使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
在本發(fā)明實(shí)施例中,優(yōu)選地,還可以包括步驟:若判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值指示進(jìn)程關(guān)閉,則不執(zhí)行按照所述定位指針定位所述流播放進(jìn)程以及將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
在流獲取進(jìn)程反饋流數(shù)據(jù)前,先讀取定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值,如果進(jìn)程狀態(tài)標(biāo)識(shí)的值對(duì)應(yīng)的進(jìn)程狀態(tài)為進(jìn)程關(guān)閉,則流獲取進(jìn)程不執(zhí)行按照定位指針定位所述流播放進(jìn)程以及將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
在本發(fā)明實(shí)施例中,優(yōu)選地,所述獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的一種實(shí)現(xiàn)方式為:獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的云端存儲(chǔ)地址;所述將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的一種實(shí)現(xiàn)方式為:根據(jù)所述云端存儲(chǔ)地址下載目標(biāo)流數(shù)據(jù)至本地,并將本地存儲(chǔ)地址傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程根據(jù)所述本地存儲(chǔ)地址獲取并播放目標(biāo)流數(shù)據(jù)。
云端存儲(chǔ)地址為流數(shù)據(jù)來(lái)源的云端服務(wù)器的地址,流獲取進(jìn)程可以用該地址與遠(yuǎn)程服務(wù)器建立連接傳輸流數(shù)據(jù)。流獲取進(jìn)程從流獲取指示中獲取目標(biāo)流數(shù)據(jù)的云端存儲(chǔ)地址。本地存儲(chǔ)地址為流數(shù)據(jù)下載到本地后在內(nèi)存中存儲(chǔ)的位置信息。流獲取進(jìn)程根據(jù)云端存儲(chǔ)地址與云端建立連接,傳輸流數(shù)據(jù),將目標(biāo)流數(shù)據(jù)下載到本地,將本地存儲(chǔ)地址傳遞給流播放進(jìn)程。流播放進(jìn)程根據(jù)本地存儲(chǔ)地址,從內(nèi)存中獲取目標(biāo)流數(shù)據(jù),并進(jìn)行播放。
在本發(fā)明實(shí)施例中,優(yōu)選地,所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉的步驟,在每次向流播放進(jìn)程傳遞目標(biāo)流數(shù)據(jù)的數(shù)據(jù)包時(shí)執(zhí)行;在執(zhí)行所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,在本次傳輸完數(shù)據(jù)包之后變更回第一數(shù)值;所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉可以包括步驟:判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值。
在每次向流播放進(jìn)程傳遞目標(biāo)流數(shù)據(jù)的數(shù)據(jù)包時(shí),都要判斷定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值是否指示進(jìn)程關(guān)閉,在流獲取進(jìn)程判斷所述進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉后,馬上通過(guò)運(yùn)算操作將進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,然后在本次傳輸完,也就是該數(shù)據(jù)包傳輸完畢之后,將進(jìn)程狀態(tài)標(biāo)識(shí)變更回第一數(shù)值。
判定定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值,則判定定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉。
如此在流獲取進(jìn)程判斷所述進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉后,將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的過(guò)程中,流播放進(jìn)程被執(zhí)行了關(guān)閉操作,上述的將進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,可以使得流播放進(jìn)程被執(zhí)行關(guān)閉操作時(shí)不會(huì)釋放對(duì)應(yīng)的內(nèi)存,避免了出現(xiàn)流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
參照?qǐng)D2,示出了根據(jù)本發(fā)明實(shí)施例二的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖,具體可以包括如下步驟:
步驟201,接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示。
在本發(fā)明實(shí)施例中,具體方式與其他實(shí)施例相同,不作贅述。
步驟202,與存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)建立連接。
在本發(fā)明實(shí)施例中,傳輸節(jié)點(diǎn)為可以用于接收、存儲(chǔ)、分發(fā)流數(shù)據(jù)的服務(wù)器,存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)為目標(biāo)流數(shù)據(jù)所在的傳輸節(jié)點(diǎn)。具體可以從流獲取指示中獲取存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)的地址。
流獲取進(jìn)程通過(guò)從流獲取指示中獲取存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)的地址,與傳輸節(jié)點(diǎn)建立連接。
步驟203,按照所述定位指針定位所述流播放進(jìn)程,向所述流播放進(jìn)程發(fā)送連接建立的通知。
在本發(fā)明實(shí)施例中,按照定位指針可以找到流播放進(jìn)程的運(yùn)行位置,具體為內(nèi)存中地址,也就是可以定位到流播放進(jìn)程,然后向流播放進(jìn)程發(fā)送連接建立的通知。具體而言,在按照定位指針定位所述流播放進(jìn)程時(shí),先識(shí)別定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值是不是第二數(shù)值,如果不是第二數(shù)值,則判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉,則將連接建立的通知發(fā)送給流播放進(jìn)程,如果是第二數(shù)值,則判定進(jìn)程狀態(tài)標(biāo)識(shí)指示進(jìn)程關(guān)閉,則不將連接建立的通知發(fā)送給流播放進(jìn)程。
步驟204,從所述傳輸節(jié)點(diǎn)獲取目標(biāo)流數(shù)據(jù)。
在本發(fā)明實(shí)施例中,流獲取進(jìn)程與傳輸節(jié)點(diǎn)建立連接后,流數(shù)據(jù)從傳輸節(jié)點(diǎn)傳輸?shù)搅鳙@取進(jìn)程,具體可以是流獲取進(jìn)程為目標(biāo)流數(shù)據(jù)獲取一個(gè)本地內(nèi)存中的存儲(chǔ)位置,并將目標(biāo)流數(shù)據(jù)存儲(chǔ)到該地址對(duì)應(yīng)內(nèi)存中。
步驟205,識(shí)別所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定所述進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉。
在本發(fā)明實(shí)施例中,進(jìn)程狀態(tài)標(biāo)識(shí)在流播放進(jìn)程創(chuàng)建時(shí),對(duì)進(jìn)程狀態(tài)標(biāo)識(shí)賦予第一數(shù)值,第一數(shù)值指示流播放進(jìn)程處于工作狀態(tài),在流播放進(jìn)程結(jié)束時(shí),通過(guò)運(yùn)算操作變更為第二數(shù)值,第二數(shù)值指示流播放進(jìn)程關(guān)閉。
流獲取進(jìn)程訪(fǎng)問(wèn)定位指針對(duì)應(yīng)的進(jìn)程狀態(tài)標(biāo)識(shí)的值,識(shí)別到進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉。
步驟206,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù)。
在本發(fā)明實(shí)施例中,若流播放進(jìn)程未關(guān)閉,流獲取進(jìn)程按照定位指針定位流播放進(jìn)程的方式與其他實(shí)施例相同,不作贅述。并將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供流播放進(jìn)程播放目標(biāo)流數(shù)據(jù)。
在本發(fā)明實(shí)施例中,優(yōu)選地,所述流獲取指示攜帶所述流播放進(jìn)程針對(duì)流獲取進(jìn)程創(chuàng)建的回調(diào)函數(shù),所述將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的一種實(shí)現(xiàn)方式為:執(zhí)行所述回調(diào)函數(shù),由所述回調(diào)函數(shù)將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
流播放進(jìn)程針對(duì)流獲取進(jìn)程創(chuàng)建的回調(diào)函數(shù)為流播放進(jìn)程創(chuàng)建的,以供相應(yīng)流獲取進(jìn)程通過(guò)回調(diào)函數(shù)與流播放進(jìn)程傳遞消息。具體為流獲取進(jìn)程將消息通過(guò)回調(diào)函數(shù)傳遞至流播放進(jìn)程。流獲取進(jìn)程執(zhí)行回調(diào)函數(shù),由回調(diào)函數(shù)將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
綜上所述,依據(jù)本發(fā)明實(shí)施例,通過(guò)接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,與存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)建立連接,按照所述定位指針定位所述流播放進(jìn)程,向所述流播放進(jìn)程發(fā)送連接建立的通知,從所述傳輸節(jié)點(diǎn)獲取目標(biāo)流數(shù)據(jù),識(shí)別所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定所述進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù),使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
參照?qǐng)D3,示出了根據(jù)本發(fā)明實(shí)施例三的一種進(jìn)程間傳遞流數(shù)據(jù)的方法的步驟流程示意圖,具體可以包括如下步驟:
步驟301,根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針。
在本發(fā)明實(shí)施例中,流播放進(jìn)程通過(guò)創(chuàng)建流獲取進(jìn)程獲取目標(biāo)流數(shù)據(jù),所述流獲取進(jìn)程通過(guò)定位指針定位流播放進(jìn)程,主進(jìn)程接收到用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求,根據(jù)請(qǐng)求,創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針。
步驟302,對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值。
在本發(fā)明實(shí)施例中,創(chuàng)建流播放進(jìn)程時(shí),對(duì)定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并且為進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值。
步驟303,在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
在本發(fā)明實(shí)施例中,在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,如果監(jiān)控到流播放進(jìn)程的結(jié)束操作,則將進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉。流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,相反如果判定進(jìn)程狀態(tài)標(biāo)識(shí)指示進(jìn)程關(guān)閉時(shí),不執(zhí)行將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
綜上所述,依據(jù)本發(fā)明實(shí)施例,通過(guò)根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針,對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值,在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
在本發(fā)明實(shí)施例中,優(yōu)選地,所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作的一種實(shí)現(xiàn)方式為:接收用戶(hù)在流數(shù)據(jù)客戶(hù)端上從目標(biāo)流數(shù)據(jù)至其他流數(shù)據(jù)的播放切換操作,或,接收到用戶(hù)對(duì)目標(biāo)流數(shù)據(jù)的播放頁(yè)面的關(guān)閉操作,所述播放切換操作包括在目標(biāo)流數(shù)據(jù)的播放界面上按照設(shè)定方向的滑動(dòng)操作。
接收用戶(hù)在流數(shù)據(jù)客戶(hù)端上播放切換操作,從目標(biāo)流數(shù)據(jù)切換至其他流數(shù)據(jù),或者接收用戶(hù)對(duì)目標(biāo)流數(shù)據(jù)的播放頁(yè)面的關(guān)閉操作,其中播放切換操作可以包括在播放界面上按照設(shè)定方向的滑動(dòng)操作,具體滑動(dòng)操作可以是任意適用的操作,本實(shí)施例對(duì)此不做限制。
在本發(fā)明實(shí)施例中,優(yōu)選地,在所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作之后,還可以包括步驟:結(jié)束所述流播放進(jìn)程。
在所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作之后,結(jié)束流播放進(jìn)程。
在本發(fā)明實(shí)施例中,優(yōu)選地,還可以包括步驟:通知內(nèi)存釋放所述流播放進(jìn)程的定位指針?biāo)加玫拇鎯?chǔ)空間。
根據(jù)流播放進(jìn)程的定位指針,通知內(nèi)存釋放定位指針指示的內(nèi)存中相應(yīng)的存儲(chǔ)空間。
在本發(fā)明實(shí)施例中,優(yōu)選地,在流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉之后,還可以包括步驟:通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,以由流獲取進(jìn)程在每次向流播放進(jìn)程傳遞流數(shù)據(jù)時(shí),根據(jù)進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值判定并非指示進(jìn)程關(guān)閉;在流獲取進(jìn)程本次傳輸完數(shù)據(jù)包之后,還可以包括步驟:將進(jìn)程狀態(tài)標(biāo)識(shí)的值變更回第一數(shù)值。
在流獲取進(jìn)程判斷所述進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉后,馬上通過(guò)運(yùn)算操作將進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,然后在本次傳輸完,也就是該數(shù)據(jù)包傳輸完畢之后,將進(jìn)程狀態(tài)標(biāo)識(shí)變更回第一數(shù)值。
判定定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值,則判定定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉。
如此在流獲取進(jìn)程判斷所述進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉后,將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的過(guò)程中,流播放進(jìn)程被執(zhí)行了關(guān)閉操作,上述的將進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,可以使得流播放進(jìn)程被執(zhí)行關(guān)閉操作時(shí)不會(huì)釋放對(duì)應(yīng)的內(nèi)存,避免了出現(xiàn)流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
參照?qǐng)D4,示出了根據(jù)本發(fā)明實(shí)施例四的一種進(jìn)程間傳遞流數(shù)據(jù)的裝置的結(jié)構(gòu)框圖,具體可以包括如下模塊:
指示接收模塊401,用于接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,所述流獲取指示攜帶針對(duì)所述流播放進(jìn)程的定位指針,所述定位指針攜帶針對(duì)所述流播放進(jìn)程的進(jìn)程狀態(tài)標(biāo)識(shí),在監(jiān)控到所述流播放進(jìn)程結(jié)束時(shí),所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉;
流數(shù)據(jù)獲取模塊402,用于獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù);
狀態(tài)判定模塊403,用于判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉;
流數(shù)據(jù)傳遞模塊404,用于按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù)。
優(yōu)選地,所述裝置還包括:
操作不執(zhí)行模塊,用于若判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值指示進(jìn)程關(guān)閉,則不執(zhí)行按照所述定位指針定位所述流播放進(jìn)程以及將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程的操作。
優(yōu)選地,所述進(jìn)程狀態(tài)標(biāo)識(shí)在所述流播放進(jìn)程創(chuàng)建時(shí),對(duì)所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予第一數(shù)值,在所述流播放進(jìn)程結(jié)束時(shí),通過(guò)運(yùn)算操作變更為第二數(shù)值;
所述狀態(tài)判定模塊包括:
第二數(shù)值識(shí)別子模塊,用于識(shí)別所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值不是第二數(shù)值,則判定所述進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉。
優(yōu)選地,所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉的步驟,在每次向流播放進(jìn)程傳遞目標(biāo)流數(shù)據(jù)的數(shù)據(jù)包時(shí)執(zhí)行;
第三變更模塊,用于在執(zhí)行所述判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,在本次傳輸完數(shù)據(jù)包之后變更回第一數(shù)值;
所述狀態(tài)判定模塊包括:
值判定子模塊,用于判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值。
優(yōu)選地,所述流獲取指示攜帶所述流播放進(jìn)程針對(duì)流獲取進(jìn)程創(chuàng)建的回調(diào)函數(shù),所述流數(shù)據(jù)傳遞模塊包括:
回調(diào)執(zhí)行子模塊,用于執(zhí)行所述回調(diào)函數(shù),由所述回調(diào)函數(shù)將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
優(yōu)選地,所述流數(shù)據(jù)獲取模塊包括:
連接建立子模塊,用于與存儲(chǔ)目標(biāo)流數(shù)據(jù)的傳輸節(jié)點(diǎn)建立連接;
通知子模塊,用于按照所述定位指針定位所述流播放進(jìn)程,向所述流播放進(jìn)程發(fā)送連接建立的通知;
流數(shù)據(jù)獲取子模塊,用于從所述傳輸節(jié)點(diǎn)獲取目標(biāo)流數(shù)據(jù)。
優(yōu)選地,所述流數(shù)據(jù)獲取模塊包括:
云端地址獲取子模塊,用于獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù)的云端存儲(chǔ)地址;
所述流數(shù)據(jù)傳遞模塊包括:
地址傳遞子模塊,用于根據(jù)所述云端存儲(chǔ)地址下載目標(biāo)流數(shù)據(jù)至本地,并將本地存儲(chǔ)地址傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程根據(jù)所述本地存儲(chǔ)地址獲取并播放目標(biāo)流數(shù)據(jù)。
綜上所述,依據(jù)本發(fā)明實(shí)施例,通過(guò)接收流播放進(jìn)程傳遞至流獲取進(jìn)程的流獲取指示,獲取所述流獲取指示對(duì)應(yīng)的目標(biāo)流數(shù)據(jù),判定所述定位指針攜帶的進(jìn)程狀態(tài)標(biāo)識(shí)的值并非指示進(jìn)程關(guān)閉,按照所述定位指針定位所述流播放進(jìn)程,并將所述目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,以供所述流播放進(jìn)程播放所述目標(biāo)流數(shù)據(jù),使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
參照?qǐng)D5,示出了根據(jù)本發(fā)明實(shí)施例五的一種進(jìn)程間傳遞流數(shù)據(jù)的裝置的結(jié)構(gòu)框圖,具體可以包括如下模塊:
進(jìn)程創(chuàng)建模塊501,用于根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針,所述流播放進(jìn)程通過(guò)創(chuàng)建流獲取進(jìn)程獲取目標(biāo)流數(shù)據(jù),所述流獲取進(jìn)程通過(guò)定位指針定位流播放進(jìn)程;
狀態(tài)標(biāo)識(shí)添加模塊502,用于對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值;
狀態(tài)標(biāo)識(shí)變更模塊503,用于在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程。
優(yōu)選地,所述狀態(tài)標(biāo)識(shí)變更模塊包括:
操作接收子模塊,用于接收用戶(hù)在流數(shù)據(jù)客戶(hù)端上從目標(biāo)流數(shù)據(jù)至其他流數(shù)據(jù)的播放切換操作,或,接收到用戶(hù)對(duì)目標(biāo)流數(shù)據(jù)的播放頁(yè)面的關(guān)閉操作,所述播放切換操作包括在目標(biāo)流數(shù)據(jù)的播放界面上按照設(shè)定方向的滑動(dòng)操作。
優(yōu)選地,所述裝置還包括:
進(jìn)程結(jié)束模塊,用于在所述監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作之后,結(jié)束所述流播放進(jìn)程。
優(yōu)選地,所述裝置還包括:
空間釋放模塊,用于通知內(nèi)存釋放所述流播放進(jìn)程的定位指針?biāo)加玫拇鎯?chǔ)空間。
優(yōu)選地,所述裝置還包括:
第三變更操作模塊,用于在流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉之后,通過(guò)運(yùn)算操作將所述進(jìn)程狀態(tài)標(biāo)識(shí)變更為第三數(shù)值,以由流獲取進(jìn)程在每次向流播放進(jìn)程傳遞流數(shù)據(jù)時(shí),根據(jù)進(jìn)程狀態(tài)標(biāo)識(shí)的值為第一數(shù)值或第三數(shù)值判定并非指示進(jìn)程關(guān)閉;
所述裝置還包括:
第一變更模塊,用于在流獲取進(jìn)程本次傳輸完數(shù)據(jù)包之后,將進(jìn)程狀態(tài)標(biāo)識(shí)的值變更回第一數(shù)值。
綜上所述,依據(jù)本發(fā)明實(shí)施例,通過(guò)根據(jù)用戶(hù)播放目標(biāo)流數(shù)據(jù)的請(qǐng)求創(chuàng)建流播放進(jìn)程,并創(chuàng)建針對(duì)定位流播放進(jìn)程的定位指針,對(duì)所述定位指針添加指示進(jìn)程狀態(tài)標(biāo)識(shí),并為所述進(jìn)程狀態(tài)標(biāo)識(shí)賦予指示進(jìn)程運(yùn)行的初始值,在播放目標(biāo)流數(shù)據(jù)的過(guò)程中,若監(jiān)控到對(duì)流播放進(jìn)程的結(jié)束操作,則將所述進(jìn)程狀態(tài)標(biāo)識(shí)的值變更為指示進(jìn)程關(guān)閉,以供流獲取進(jìn)程在判定進(jìn)程狀態(tài)標(biāo)識(shí)并非指示進(jìn)程關(guān)閉時(shí),將目標(biāo)流數(shù)據(jù)傳遞至流播放進(jìn)程,使得可以在目標(biāo)流數(shù)據(jù)傳遞給流播放進(jìn)程前,通過(guò)進(jìn)程狀態(tài)標(biāo)識(shí)的值判定流播放進(jìn)程未關(guān)閉,避免了流獲取進(jìn)程在不知道流播放進(jìn)程已關(guān)閉的情況下將流數(shù)據(jù)反饋給定位指針定位的內(nèi)存中的位置,避免了定位指針不合法或定位指針已被釋放的問(wèn)題,解決了訪(fǎng)問(wèn)非法內(nèi)存位置,程序崩潰的問(wèn)題。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類(lèi)系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。
類(lèi)似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的一種進(jìn)程間傳遞流數(shù)據(jù)的方法和裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱(chēng)。