Android中的流程共享互斥锁和条件变量

时间:2015-03-13 12:01:50

标签: android pthreads mutex bionic

Android是否支持进程共享的互斥锁和条件变量? 我听说仿生实现不支持它们,因为Android有其他的IPC手段,但找不到可以确认或否认它的信息。

消息来源有点令人困惑。在bionic的pthread_mutex.cpp之前 pthread_mutexattr_setpshared 有评论:

    /* process-shared mutexes are not supported at the moment */

但在函数内部还有写:

         /* our current implementation of pthread actually supports shared
         * mutexes but won't cleanup if a process dies with the mutex held.
         * Nevertheless, it's better than nothing. Shared mutexes are used
         * by surfaceflinger and audioflinger.
         */

那么有没有人在原生Android应用程序中使用进程共享互斥(和cond vars)(例如,通过与 ashmem_create_region 共享它们)?

2 个答案:

答案 0 :(得分:1)

1,Android确实支持共享互斥锁。 2,Android不支持强大的互斥锁(强大的互斥锁),如果一个进程因持有的互斥锁而死掉,它就可以进行清理。

因此,只有系统进程可以使用它(永远不会崩溃或被杀死,如果它崩溃,系统重启)。

答案 1 :(得分:0)

我已经设法让它在Android 5.0上运行,因此它们受到支持。 其中一个进程创建共享内存并与另一个共享文件描述符,mmap和它都有效。