作者wtchen (沒有存在感的人)
看板C_and_CPP
標題[問題] 如何讓兩個*.c 檔案共用一個mutex
時間Sun Sep 6 02:54:49 2015
開發平台(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