[問題] 如何讓兩個*.c 檔案共用一個mutex

看板C_and_CPP (C/C++)作者 (沒有存在感的人)時間10年前 (2015/09/06 02:54), 10年前編輯推噓3(308)
留言11則, 6人參與, 最新討論串1/1
開發平台(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

09/06 03:21, , 1F
雖然不見得是最佳解, 但你的要求完全就是 extern
09/06 03:21, 1F

09/06 03:30, , 2F
啊, 我漏掉「只有這兩個檔案能用」這個需求...
09/06 03:30, 2F

09/06 04:53, , 3F
大概就是新開個檔案解決了....
09/06 04:53, 3F

09/06 04:54, , 4F
用慣OOP回頭用C覺得好不方便阿
09/06 04:54, 4F

09/06 11:34, , 5F
新開檔案放I2C的讀寫及mutex,其他人都用此檔案使用I2C。
09/06 11:34, 5F

09/06 14:29, , 6F
可以先在其中一個static,另外一個用pointer指過去
09/06 14:29, 6F

09/06 17:17, , 7F
可以用 named semaphore 嗎?
09/06 17:17, 7F

09/07 12:11, , 8F
extern,然後 declare 放在某個 .h, 要用的人 include ?
09/07 12:11, 8F

09/07 12:12, , 9F
definition 放在某個 .c, 這樣不知道 wo 不 work
09/07 12:12, 9F

09/07 12:12, , 10F
因為是 extern,所以只有一個 definition, 不會衝突
09/07 12:12, 10F

09/07 12:13, , 11F
然後宣告也只有有 include 的人能看到,才能用(假裝啦)
09/07 12:13, 11F
文章代碼(AID): #1LwpfyXM (C_and_CPP)
文章代碼(AID): #1LwpfyXM (C_and_CPP)