多執行緒訪問感測器資源,採集感測器實時值,需要加鎖嗎?

時間 2021-06-01 17:28:50

1樓:

你怎麼知道對方的read是不是執行緒安全是不是可重入的?

假如對方設計的是讀一次之後再也讀不到的,多執行緒訪問一人一一半殘廢資料?

設計成單一執行緒訪問然後通過佇列塞給其他執行緒來處理就行了

2樓:

不確定的情況下,最好加鎖。

假定是個IIC感測器,GPIO模擬的,驅動又沒加鎖。那麼讀取函式重入會引起IIC時序錯亂,進一步造成通訊失敗。

如果擔心鎖效能問題,可以專門用乙個執行緒讀資料存入記憶體,然後其他執行緒無鎖的讀記憶體中的這個變數?

3樓:

比如讀裝置不需要鎖,但是dll裡也沒有加鎖,那就不用鎖啊.

比如讀裝置不需要鎖,但是dll裡替你加鎖了,那就不用鎖啊.

又比如讀裝置需要鎖,但是dll裡替你加鎖了,那就不用鎖啊.

又比如讀裝置不需要鎖,但是dll裡替你加鎖了,那就不用鎖啊.

又比如讀裝置不需要鎖,但是dll里弄了個快取變數又沒加鎖,那就要用鎖啊.

又比如讀裝置需要鎖,但是dll里弄了個快取變數又沒加鎖,那就要用鎖啊.

又比如讀裝置需要鎖,但是dll里弄了個快取變數但加了鎖,那就不用鎖啊.

又比如讀裝置不需要鎖,但是需要一段記憶體做非同步,然後dll裡用了一段全域性記憶體當快取然後兩次呼叫同乙個函式會讓dll兩次非同步操作使用同一段記憶體,換句話說不可重入,然後dll裡加了鎖,那就不用鎖啊.

又比如讀裝置不需要鎖,但是需要一段記憶體做非同步,然後dll裡用了一段全域性記憶體當快取然後兩次呼叫同乙個函式會讓dll兩次非同步操作使用同一段記憶體,換句話說不可重入,然後dll沒鎖,那就要用鎖啊.

4樓:柳凌峰

你可以考慮,把讀取請求按佇列依次去讀,這樣就根本不存在其他回答中所說的什麼資料不一致問題。

反正目前但凡遇到了併發讀寫同乙個物件,我都是盡可能採用佇列的方式操作。

5樓:科技愛好者

讀取是不需要鎖的,我剛做完這個多執行緒採集器,鎖定後就跟單執行緒一樣,要逐一等待。如果你是寫入資料庫,所有併發資料資料庫就能處理完成的。當有修改相同地方時才要用到鎖的。

6樓:Acoris

你就不能寫乙個專門的執行緒去維護串列埠?串列埠是資源,本應該加鎖,但是你也可以考慮讓乙個專門的執行緒獨佔資源,暴露相應的介面給別人不就可以避免很多的麻煩了嗎

7樓:

瀉藥,要不要加鎖要看對方的DLL中的函式設計。

例如如果你讀串列埠不加鎖,就可能導致乙個執行緒讀到乙個包的前半截資料,另乙個執行緒讀到後半截資料,這就很尷尬了。

更別提DLL不是你寫的,其中是否用到了不支援重入、不支援併發的變數,完全沒法評估。

所以最好的做法是在單一執行緒中使用這個DLL的 read 函式,其它執行緒通過執行緒間通訊從這個執行緒拿讀取後的結果,而不要直接呼叫 read 方法

8樓:黃亮anthony

多執行緒鎖定資源,不是鎖定操作.記得對資源加鎖,保證資源的訪問一致,不是保證操作一致.

所以,問題不是讀是否要加鎖,而是這個資源的所有操作要一致加鎖.

當然也可以一致不加鎖, 實質是把一致性保證交給了感測器的實現.

無論如何不要有些操作加鎖,有些操作不加鎖.

鎖的開銷其實並不大,先保證正確,再談效能.

9樓:旋鈕

問題在於,原生的read是否執行緒安全,不安全的話,同時或先後進入read就有可能得到同一批資料,那你就需要封裝出乙個執行緒安全的Read,保證原生read在返回前沒有第2個執行緒能read。

感測器反饋(4 20mA)到 PLC 模組,感測器只有兩根線,一根接 24V,一根接模擬量模組?

俄頂呱呱 感測器兩根線,一根直接進了PLC的通道,另一根和其他感測器短接後匯成總的一根線也進了PLC的公共段,測量電流應將萬用表串聯在迴路裡測量 題主你好,一般兩線制感測器和AI模組的等效電路可以看成圖中,這個能理解,就能解決以後所以關於感測器的一切問題。可以把這個檢測迴路看成乙個環路,這個環路暢通...

手機方位感測器和方向感測器有什麼區別?手機指南針運用的的是什麼感測器?

獻世小咖 一般來說,方位指裝置繞Z軸 垂直地面的軸,可以了解一下NED座標係 的旋轉角度,也就是指南針實現功能。而你說的方向應該指的是裝置的姿態 aiiitude 包括繞X Y Z三軸的夾角 尤拉角 尤拉角是attitude的一種表達方式,常用的還有四元數,DCM等,獲取attitude的過程稱為姿...

常見的感測器有哪些?

壹只貓 根據感測器型別不同,具體包括溫度和濕度感測器 壓力感測器 影象感測器 光感測器 位置感測器 重力感測器等。流量感測器 壓力感測器 溫度感測器佔據最大的市場份額。我這裡 壹只貓 的專欄裡,整理了感測器行業研究報告 壹只貓 2021.05更新 感測器行業報告,一共36份。 美續測控 1 雷射感測...