一種實時數(shù)據(jù)采集與存儲系統(tǒng)的實現(xiàn)方法
3.4 多線程的實時數(shù)據(jù)存儲軟件設(shè)計
在要求高速、實時和連續(xù)采集和存儲的情況下,一方面要求系統(tǒng)不間斷地進行數(shù)據(jù)采集,同時還要進行數(shù)據(jù)實時地存儲,否則將會丟失數(shù)據(jù),造成數(shù)據(jù)不完整。為了解決這個問題,我們在軟件實現(xiàn)中,引入了Windows的多任務(wù)處理技術(shù)(multitasking)。在程序里創(chuàng)建兩個工作線程分別完成數(shù)據(jù)采集和數(shù)據(jù)存儲工作。緩沖方式采用上面所說雙緩沖區(qū)模式,當(dāng)數(shù)據(jù)采集線程(SampleThreadProc)把采集到的數(shù)據(jù)寫入第一緩沖區(qū)時,數(shù)據(jù)存儲線程(StorageThreadProc)把第二緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤;當(dāng)數(shù)據(jù)采集線程把數(shù)據(jù)寫入第二緩沖區(qū)時,數(shù)據(jù)存儲線程把第一緩沖區(qū)的數(shù)據(jù)存入SCSI硬盤;如此循環(huán)。另外通過實際實驗測試Adaptec19160Ultra160-SCSI硬盤控制器,配合希捷公司出品的ST3146707LCSCSI硬盤,持續(xù)寫入速率能達到80Mbytes/sec。遠大于45Mbytes/sec的采集速率。所以當(dāng)數(shù)據(jù)采集線程寫滿其中一個緩沖區(qū)之前,數(shù)據(jù)存儲線程已經(jīng)把另一個緩沖區(qū)里的數(shù)據(jù)存儲入SCSI硬盤。所以這種方法能保證數(shù)據(jù)的實時性、完整性和連續(xù)性。其程序流程圖如圖1。
評論