mutex in shmem

共享内存中的互斥量在程序没问题的时候工作得很好, 但对于复杂程序来说难保会出现异常终止的情况。于是我做个测试,让两个进程同时lock一个共享内存中的mutex,对拥有mutex的进程下Ctrl-C使其中止,现象是,等待mutex的进程并未象预期的那样得到mutex或继续block,而是得到了Signal,提示EMT trap后退出了。

如果这时候再启动进程,而不再对这个mutex进行初始化(shmem并未被unlink,仍然存在于/dev/shmem目录下,假设异常终止的进程又不是建立这个mutex的进程),则所有进程在lock时都会顺利得到这个mutex,而不会block(这个现象与从未初始化mutex的现象一样)。

各位高手是否有什么解决方法?用HA也不能解决这种问题呀。

要用到这个函数 SyncMutexRevive().

http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/lib_ref/s/syncmutexrevive.html