看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Raspberry pi + Raspbian 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) pthread 問題(Question): Rpi上只有一組I2C能接外部裝置 我需要接五個外部裝置:GY80 (內含四個address)跟PCA9685PW 由於資料更新速度不一,我會跑5個thread分別去讀寫這五個裝置 為了防止讀寫數據失敗,我必須用一個mutex 使得其中一個裝置讀寫的時候不會受到其他干擾 問題來了,GY80(四個裝置)的讀取我寫在一個GY80.c檔案裡 PCA9685PW的讀寫我寫在另一個檔案PCA9685PW.c 請問我要如何創造一個只有這兩個檔案能夠touch到而且share的mutex? 如果只有單一檔案我可以用static pthread_mutex_t mymutex 還是我必須合併兩個檔案? 我能想到的可能就是再生一個*.c然後用static... 補充說明(Supplement): RPi只有單核.... 多執行緒沒想像容易 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 90.41.135.32 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1441479292.A.856.html ※ 編輯: wtchen (90.41.135.32), 09/06/2015 03:00:06
uranusjr: 雖然不見得是最佳解, 但你的要求完全就是 extern 09/06 03:21
uranusjr: 啊, 我漏掉「只有這兩個檔案能用」這個需求... 09/06 03:30
wtchen: 大概就是新開個檔案解決了.... 09/06 04:53
wtchen: 用慣OOP回頭用C覺得好不方便阿 09/06 04:54
ables: 新開檔案放I2C的讀寫及mutex,其他人都用此檔案使用I2C。 09/06 11:34
tjjh89017: 可以先在其中一個static,另外一個用pointer指過去 09/06 14:29
s25g5d4: 可以用 named semaphore 嗎? 09/06 17:17
yoco: extern,然後 declare 放在某個 .h, 要用的人 include ? 09/07 12:11
yoco: definition 放在某個 .c, 這樣不知道 wo 不 work 09/07 12:12
yoco: 因為是 extern,所以只有一個 definition, 不會衝突 09/07 12:12
yoco: 然後宣告也只有有 include 的人能看到,才能用(假裝啦) 09/07 12:13