[問題] pthread mutex問題請教

作者: chienchan (linting)   2016-09-01 08:16:18
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Android Linux
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
None
問題(Question):
我自己實作一個function去開底層的file node(/dev/XXX)
並將這個function包成native library透過JNI給app使用
在執行app的時候 app本身的程式也會去使用同一file node(另一個library)
app也會呼叫我包好的native library 意思就是說file node會被開啟兩次
第一次是app其他process去呼叫的
另一次則是load native library去呼叫的
我有試著在open file node前加mutex做保護 但是不知道這樣是不是正確的
pthread_mutex_lock(&mutex);
ret = open(/dev/XXX, O_RDWR);
...
close(/dev/XXX);
pthread_mutex_unlock(&mutex);
我發現這樣好像擋不了file node被重複開的現象
不知道我是否要在加其他的東西才能擋到呢?
作者: bluesoul (忙死你老爸)   2016-09-01 08:30:00
mutex是防止data race 你的情況應該是要別的
作者: Eleina (艾琳娜)   2016-09-01 10:20:00
close 前才 unlock 才能防止重複開啟吧?close 後
作者: HolyBugTw (HolyBug)   2016-09-01 10:22:00
fcntl
作者: shadow0326 (非議)   2016-09-01 10:51:00
同2F
作者: tjjh89017 (伊達政宗)   2016-09-01 14:04:00
你應該要把app跟native lib的開檔都透過同一個路徑開啟而不是分別由app跟native兩方自己去開
作者: jaid (jaid)   2016-09-01 18:09:00
file lock
作者: Hazukashiine (私は幸せです)   2016-09-01 22:25:00
lock(&mutex) open(f) ... close(f) unlock(&mutex)
作者: Eleina (艾琳娜)   2016-09-01 23:20:00
mutex value 跟 address 印出來看看
作者: shadow0326 (非議)   2016-09-02 00:40:00
原來是不同process 那當然不行
作者: james732 (好人超)   2016-09-02 00:52:00
改用Named semaphores?
作者: tjjh89017 (伊達政宗)   2016-09-02 01:12:00
就例如說都交給native lib來檔案操作,app本身透過native lib來修改檔案,而不是自己另外開檔案來讀寫
作者: Caesar08 (Caesar)   2016-09-02 01:15:00
是喔。mutex這些東西是拿來用在同一個process的我錯了,pthread有cross process的mutex我想file lock應該才是你要的東西
作者: descent (「雄辯是銀,沉默是金」)   2016-09-02 09:11:00
mutex 只能在同一個 process 不同 thread 用semaphore 或 file lock 對你才有用
作者: hn12404988 (Willy)   2016-09-02 13:23:00
std::mutex 是能跨std::thread的不是嗎? 但有些linux本身會直接用posix thread代替std, 有的framework甚至是使用boost::thread, 不同thread有最適合的mutex,從你寫的,我猜不是std的,你可能要找framework manual來看Sorry, 我剛重看,process間是各自獨立的,mutex不可能有用,我剛以為你在解決multi-thread問題
作者: askacis (ASKA)   2016-09-02 18:32:00
google flock
作者: alex70266 (小眼)   2016-09-02 19:21:00
作者: chiwa (我是青蛙,不是王子^_^)   2016-09-03 23:05:00
需要用到2個native lib的理由是? 我會覺得這樣的設計很怪

Links booklink

Contact Us: admin [ a t ] ucptt.com