嚴以律己,寬以待人. 三思而后行. GMail/GTalk: yanglinbo#google.com; MSN/Email: tx7do#yahoo.com.cn; QQ: 3 0 3 3 9 6 9 2 0 .
在通信程序中,經常使用環形緩沖區作為數據結構來存放通信中發送和接收的數據。環形緩沖區是一個先進先出的循環緩沖區,可以向通信程序提供對緩沖區的互斥訪問。
1、環形緩沖區的實現原理
環形緩沖區通常有一個讀指針和一個寫指針。讀指針指向環形緩沖區中可讀的數據,寫指針指向環形緩沖區中可寫的緩沖區。通過移動讀指針和寫指針就可以實現緩沖區的數據讀取和寫人。在通常情況下,環形緩沖區的讀用戶僅僅會影響讀指針,而寫用戶僅僅會影響寫指針。如果僅僅有一個讀用戶和一個寫用戶,那么不需要添加互斥保護機制就可以保證數據的正確性。如果有多個讀寫用戶訪問環形緩沖區,那么必須添加互斥保護機制來確保多個用戶互斥訪問環形緩沖區。
圖1、圖2和圖3是一個環形緩沖區的運行示意圖。圖1是環形緩沖區的初始狀態,可以看到讀指針和寫指針都指向第一個緩沖區處;圖2是向環形緩沖區中添加了一個數據后的情況,可以看到寫指針已經移動到數據塊2的位置,而讀指針沒有移動;圖3是環形緩沖區進行了讀取和添加后的狀態,可以看到環形緩沖區中已經添加了兩個數據,已經讀取了一個數據。
2、實例:環形緩沖區的實現
環形緩沖區是數據通信程序中使用最為廣泛的數據結構之一,下面的代碼,實現了一個環形緩沖區:
posted on 2008-07-11 03:38 楊粼波 閱讀(2168) 評論(0) 編輯 收藏 引用
Powered by: C++博客 Copyright © 楊粼波