1.一種多線程數(shù)據(jù)傳輸方法,具體方法為:
初始化系統(tǒng)時,申請一個能夠容納N個指針的連續(xù)內(nèi)存空間;所述N=2m,m為大于等于1的整數(shù);每個指針位置為一個單位,N個指針位置組成一個數(shù)組空間dataPtrArray;所述指針指向用戶數(shù)據(jù)地址;
定義兩個整數(shù)值:writePos和readPos;其中,writePos表示數(shù)據(jù)寫入線程當前正要寫入所述數(shù)組空間的位置;readPos表示數(shù)據(jù)讀取線程當前正要從所述數(shù)組空間讀取數(shù)據(jù)的位置;數(shù)據(jù)寫入成功,則writePos值自增;數(shù)據(jù)讀取成功,則readPos值自增,將被成功讀取的數(shù)組空間位置的指針值清零;
定義一個整數(shù)掩碼PosMask,其值為N-1;通過PosMask的值與讀寫位置的值做與運算,來決定當前正要寫入和讀取的真正的數(shù)組空間的位置,即當前寫入的位置應(yīng)該是dataPtrArray[writePos&PosMask],讀取的位置是dataPtrArray[readPos&PosMask]。
2.根據(jù)權(quán)利要求1所述的多線程數(shù)據(jù)傳輸方法,所述方法還包括:寫入數(shù)據(jù)時,采用Intel的鎖總線技術(shù),以原子的方式,同時判斷寫入位置是否為空,若為空,則寫入,若不為空,則表示隊列已經(jīng)寫滿了,此時寫入線程陷入等待;讀取數(shù)據(jù)時,采用Intel的鎖總線技術(shù),以原子方式的判斷讀取位置是否為空,若不為空,則讀取返回,并且將讀取位置清零,若為空,則表示整個隊列都已經(jīng)讀取完,此時讀取線程陷入等待;當成功的寫入一個數(shù)據(jù)指針時通知讀取線程數(shù)據(jù)可讀??;當成功的讀取一個數(shù)據(jù)指針時通知寫入線程數(shù)據(jù)可寫入。
3.根據(jù)權(quán)利要求1或2所述的多線程數(shù)據(jù)傳輸方法,所述內(nèi)存空間中,以每8個字節(jié)為一個單位。