[问题] 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