實時系統的資料接收與處理(2)

2021-05-21 15:00:56 字數 405 閱讀 5691

上篇文章中,我用了乙個tcriticalsection來保護資料佇列,避免了多執行緒時可能出現的訪問衝突。

針對工作執行緒tsocketbufferthread發現佇列裡面空空如也時,如何辦的問題,我是用訊號量fevent:t******event來處理。

如果不處理,那麼等於一直在掃面佇列,cpu會佔很高。

能不能用sleep呢?sleep能降低cpu佔用率,但是sleep就是睡覺了,不幹活,它睡著的時候任務來了也不醒,所以還是不要用,哪怕是睡1毫秒。

能不能把執行緒掛起呢?等有任務再把它喚醒。這樣看起來是可以的,而且也不會占用cpu。

需要注意兩點:

1、執行緒socketbufferthread掛起前要unlock,否則,在它重啟用前誰也無法獲得鎖;

3、程式退出時,關閉執行緒,必須先喚醒它:

實時系統與非實時系統的區別

嵌入式作業系統分為實時系統和非實時系統兩類,常見的實時系統有 threadx freertos ucos 常見的非實時系統有 windows linux android。兩類作業系統的主要區別在於任務排程處理方式不同,常用的任務排程方式有兩種 基於任務優先順序的任務排程方式和基於時間片的任務排程方式...

廣播的接收與處理

廣播的接收 開發者在處理廣播事件時,繼承broadcastreceiver,複寫onreceive方法.每次系統在對應事件產生後,廣播接收類 先前開發者編寫的繼承自broadcastreceiver類的方法 例項化,然後呼叫onreceive context,intent 方法,完成後,此物件不再被...

js 處理接收到的資料

對的我,我們遇到伺服器端傳送過來的資料,第一時間可能想到的是json資料解析,對不對。然而我今天遇到一件麻煩的事情。本來介面文件說的好好的,只傳送形如 即 的json資料。然而,當我信心滿滿想解析該資料的時候 var obj json.parse data 卻得到了object 甚至 unexpec...