如今來講一下這個消息隊列所傳遞的數據類型和特性。數組
首先,這個消息隊列不是真正意義上的「隊列」,它呢只會把每次存入的數據指針排隊,而不會保存該數據。因此調用OSQPost時若是每次都是相同的指針,那就說明 白放了,由於讀取的時候讀到的是同一個指針,他老是最新的數據,老的沒了,何來隊列?spa
其次,該隊列能夠保存void*類型指針,即全部數據類型都適用,管他是整型仍是結構體。指針
如今這個隊列不是真隊列,那怎麼解決?莫急,看下面:隊列
我這裏提一種簡單的方法,複雜的各位資格解決吧。消息隊列
一、定義一個存放數據的緩衝區數組,這樣每次向對列添加時就能夠用不一樣的地址。例如struct my_struct data_array[10]變量
二、而後就是怎麼變這個數組下標的問題,直接定義一個變量來尋找,而後使用++,到最後再折回來就行了,例如:數據類型
int idx=0;方法
idx++;數據
idx %= BUF_SIZE;co
三、對於速度能及時解決的任務,那下標這樣搞就能夠,若是不行,那可能要從新考慮覆蓋的問題了。