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 共享它们)?
答案 0 :(得分:1)
1,Android确实支持共享互斥锁。 2,Android不支持强大的互斥锁(强大的互斥锁),如果一个进程因持有的互斥锁而死掉,它就可以进行清理。
因此,只有系统进程可以使用它(永远不会崩溃或被杀死,如果它崩溃,系统重启)。
答案 1 :(得分:0)
我已经设法让它在Android 5.0上运行,因此它们受到支持。 其中一个进程创建共享内存并与另一个共享文件描述符,mmap和它都有效。