如果我有一个Binder对象表示一个远程接口(对于Android服务或远程客户端的回调接口),当从多个线程通过此对象发送IPC时是否需要显式同步,还是由底层的Android组件?Android AIDL/Binder接口对象是线程安全的吗?
4
A
回答
1
在Android中调用Binder RPC方法是线程安全的,您可以在不同步的情况下从多个线程发出调用。
在接收端 - 假设服务处于与其通常不同的进程中 - 您可以从一个Binder线程池接收调用,而不管它在调用方如何调用。这意味着您的服务可能有多个呼叫同时运行,因此请注意这一点。在Android的文档
3
有界服务使用粘合剂类,如果我们想要客户端和服务在同一个进程中运行,并且不希望在不同的应用程序执行并发IPC实现。 因此调用服务方法的线程(在客户端)将被阻塞,直到它返回。 可能会在客户端(活动)中产生多个线程,每个线程在任何时刻都会调用服务方法。因此,服务应该实现为线程安全的,因为可能一次有多个线程调用服务方法。 结论是,当Binder类扩展到实现有界服务时,android并不关心同步。
如果我们希望允许来自不同应用程序的客户端访问IPC的服务并希望处理服务中的多线程,则使用AIDL实现有界服务。结论是,当AIDL被用来实现有界服务时,android并不关心同步。
相关问题
- 1. EF对象是线程安全的吗?
- 2. IShellLinkW COM接口线程安全吗?
- 3. C++流对象线程安全吗?
- 4. 这会使对象线程安全吗?
- 5. 什么是线程安全的对象
- 6. Android DownloadManager线程安全吗?
- 7. 是java.sql.Connection线程安全吗?
- 8. 是CreateChildContainer()线程安全吗?
- 9. 是Thread.getStackTrace()线程安全吗?
- 10. 是DocumentBuilder.parse()线程安全吗?
- 11. 是javax.sql.DataSource线程安全吗?
- 12. 是TcpClient.Available线程安全吗?
- 13. 是sqlite.swift线程安全吗?
- 14. 是winsock2线程安全吗?
- 15. 是unique_ptr线程安全吗?
- 16. 是SplittableRandom.split()线程安全吗?
- 17. 线程安全(是吗?)
- 18. 是IP2Location线程安全吗?
- 19. 是System.DirectoryServices.AccountManagement.GroupPrincipal线程安全吗?
- 20. 是Microsoft.Practices.EnterpriseLibrary.Data.Database.SetParameterValue线程安全吗?
- 21. 是java.util.UUID线程安全吗?
- 22. 是enumerateUsingBlock:线程安全吗?
- 23. 是java.util.concurrent.Future线程安全吗?
- 24. 是DatagramSocket.send线程安全吗?
- 25. 是长线程安全吗?
- 26. 是SpelExpression线程安全吗?
- 27. 是UImage.AsPNG()线程安全吗?
- 28. 是ArrayDescriptor线程安全吗?
- 29. 线程安全对象 - 是否静态?
- 30. GridFS Java对象是否线程安全?