У меня есть Android-сервис Java, который будет взаимодействовать с сервисом HAL
с помощью HIDL
вызовов.
У меня есть сценарий ниже, я не уверен, что к нему относятся как к критическому.
+----------+ (AIDL) +--------------+
|App thread|-------->|Java Service | (HIDL) +-----------+
+----------+ |(SendFunction)|------->|CPP service|
+--------------+ +-----------+
^
+--------------+ |
|AnotherThread |-----|
+--------------+
Определение SendFunction
такое, как показано ниже.
private void SendFunction(int status, DiagCommandDesc response) {
try {
server.executeCommandResponse(status, response);
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "Response sent to HAL.");
}
} catch (Exception e) {
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "HAL Server error.");
}
}
}
SendFunction
вызывается из двух разных потоков.
Где server
является экземпляром для CPP Server
с использованием HIDL
.
МОЙ вопрос.
server.executeCommandResponse(status, response);
Нужно ли рассматривать выше call
как критическое и синхронизировать его? как server
объект будет доступен из двух разных потоков.