Atores Scala com interoperabilidade Java para bibliotecas COM subjacentes
-
22-09-2019 - |
Pergunta
Estou trabalhando em um projeto JVM que usa componentes ESRI (baseados em COM, empacotados com JIntegra). O cliente solicitou que os arquivos JAR que produzimos funcionem na JVM e sejam acessíveis ao código Java.Eu gostaria de usar o Scala, mas estou preocupado com o desempenho da biblioteca com os atores do Scala.Particularmente, estou preocupado com os diferentes mecanismos que COM e Java empregam para passar objetos de um thread para outro.
Alguém tem alguma experiência com isto?Eles vão jogar bem?
Editar:para esclarecimento
Percebi que ao realizar E/S no banco de dados ESRI a utilização da CPU é de aproximadamente 15%.Gostaria de ler cada linha e passá-la para outro ator para análise.Então eu poderia ter vários threads lendo do banco de dados de uma só vez.O problema é que cada linha recuperada usando a biblioteca ESRI é na verdade um objeto COM empacotado em Java.
Solução
Os atores podem não ser o paradigma certo para você então.Idealmente, as mensagens entre os atores serão imutáveis e apenas o estado interno do ator será modificado.Parece que você deseja fornecer uma linha a um ator e, em seguida, fazer com que o ator modifique a linha no local.
Nesse caso, você ainda terá os mesmos riscos de simultaneidade do uso de threads + bloqueios, o que é possivelmente uma solução melhor para esse problema específico.
Por outro lado, se as linhas SÃO imutáveis, e os atores retornam algo que é derivado das linhas (sem tê-las alterado), então deveria "simplesmente funcionar", e eu não estaria especialmente preocupado com as diferentes maneiras pelas quais Java e COM veja tópicos.