Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 进程同步的Android机制_Java_Android_Android Ndk_Synchronization_Semaphore - Fatal编程技术网

Java 进程同步的Android机制

Java 进程同步的Android机制,java,android,android-ndk,synchronization,semaphore,Java,Android,Android Ndk,Synchronization,Semaphore,为了在android中的两个进程之间交换信息,我使用共享内存。但是为了避免并行写/读的情况,我需要在这两个过程之间进行某种同步(经典的生产者-消费者问题) 标准方法是使用信号量。但是,Android似乎不支持这些功能(请参阅上的实现) 经过一些研究,我发现对于进程同步,可以使用带有文件锁的方法()。这对我来说是一个完美的解决方案,但是我们的应用程序不应该声明WRITE_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE,因此我们无法锁定“real”文件。我尝试了通过使

为了在android中的两个进程之间交换信息,我使用共享内存。但是为了避免并行写/读的情况,我需要在这两个过程之间进行某种同步(经典的生产者-消费者问题)

标准方法是使用信号量。但是,Android似乎不支持这些功能(请参阅上的实现)

经过一些研究,我发现对于进程同步,可以使用带有文件锁的方法()。这对我来说是一个完美的解决方案,但是我们的应用程序不应该声明WRITE_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE,因此我们无法锁定“real”文件。我尝试了通过使用共享内存对象的文件描述符来锁定该对象本身的方法。不幸的是,这不起作用。对于FileLock,似乎需要“真实”的文件对象

我做了很多搜索,从我发现的情况来看,大多数经典的ipc同步机制都不受支持,在Android世界中,绑定器的使用是首选的ipc机制

我的问题是,如何使用绑定器(或任何其他替代方案)实现类似信号量的机制。当然,我们可以创建AIDL

  • 孤岛
  • 释放
一套方法。但这意味着(在每次写/读操作之前)将需要“忙等待”方法,这是我们想要避免的


我们是否可以使用任何同步机制/模式(Java或NDK)?

以无锁方式设计IPC如何?(就像两个队列一样,共享内存将有两个单独的部分,每个部分仅由另一个进程修改,在为另一个进程准备数据包之后,将有某种标志,使整个新数据包在下一次从另一个进程读取时合法,该进程将处理这些数据,并通知它自己的b中的第一个进程。)之后,处理完成,数据包可以丢弃)。(我从来没有在Android上这样做过,所以我不知道这种解决方案有任何Android特有的问题)嗨,Ped7g,谢谢你的想法!是的,我在考虑类似的事情,第二个内存可以用作标志,指示内存是否准备好读取。但我相信这也需要忙碌的等待:消费者过程需要不断地调查价值。我不确定它是否安全:写入第二个内存(标志)也是非原子操作。因此,我正在寻找一种在操作系统级别工作的机制,它将解决所有这些问题:原子操作和通知等待的对象传统的
pipe()
socket(AF\u UNIX)
是否是您选择的基于共享内存的方法的适当替代方法?为了避免R/W等待,您可以使用
O_NONBLOCK
flag。嗨,塞吉奥,这听起来像是另一种选择。基本上,我们希望以高速率在两个进程之间传输相当大的缓冲区。我认为套接字在性能上可能与共享内存类似。我在SO上发现了以下线索:看起来应该是可能的(即使在标准JavaAPI中也是如此),但是不确定这种方法有多安全。有人提到,三星设备(也是我们的目标)正在限制此类使用。