gogo专业大尺度亚洲高清人体,美女张开双腿让男生桶,亚洲av无码一区二区三区鸳鸯影院,久久久久国产精品人妻

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 安卓開發(fā)中使用緩沖機制

安卓開發(fā)中使用緩沖機制 時間:2018-09-20      來源:未知

1.1 功能介紹

為了適配網(wǎng)絡傳輸線程和數(shù)據(jù)處理線程的速度,并且保證所有數(shù)據(jù)不丟失,使用了緩沖技術。其實質(zhì)就是建立一個大小合適的哈希表用于存儲數(shù)據(jù)來模擬隊列先進先出的效果。同時,為了協(xié)調(diào)讀和寫線程,使用了同步的技術。

1.2 函數(shù)介紹

1)向緩沖中增加數(shù)據(jù)

public synchronized Boolean addBuffer(byte[] data) {

if (data != null) {

if (buffer.size() < volume) {// 確保緩存不會溢出

buffer.put(buffer.size(), data);

return true;

} else {

log.E("%%%%% buffer.size() > volume !!!! %%%%%");

return false;

}

} else {

log.E("%%%%% addBuffer() param is null !!!! %%%%%");

return false;

}

}

紅色標記的synchronized表示同步,即:對于同一段緩沖區(qū),讀和寫操作同一時間只能進行一種,這樣可以保證寫一半的數(shù)據(jù)被讀取的情況不會出現(xiàn)。

2)從緩沖中讀取數(shù)據(jù)

public synchronized byte[] getBuffer() {

byte[] data = null;

if (buffer.size() > 0) {

data = buffer.get(buffer.size() - 1);

buffer.remove(buffer.size() - 1);

} else {

log.E("%%%%% readBuffer.size() < 0 !!!! %%%%%");

}

return data;

}

確保只有當緩沖的大小大于0的時候才會讀取數(shù)據(jù)。

3)向命令緩沖中增加數(shù)據(jù)

public synchronized Boolean addCmdBuffer(int cmd, int type, int id) {

byte[] cmdd = { (byte) cmd, (byte) type, (byte) id };

if (buffer.size() < volume) {

buffer.put(buffer.size(), cmdd);

return true;

} else {

log.E("%%%%% buffer.size() > volume !!!! %%%%%");

return false;

}

}

增加的命令會被傳遞到主線程,用于實時的處理特殊命令,如:按鈕按下的效果。

{

4)獲得緩存的容量

public synchronized int getVolume() {

return buffer.size();

}

用于獲得緩存的大小,緩存的大小是一個必須要實時監(jiān)控的數(shù)據(jù),溢出有可能造成程序的異常退出。

pthread_exit(0);

上一篇:對Llinux下signal機制的一點認識

下一篇:關于linux下的xinetd服務

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5,京公海網(wǎng)安備11010802025203號

回到頂部