Essa questão é especialmente útil quando um determinado processo precisa realizar várias ações logicamente independentes entre si, em outras palavras, elas podem ser executadas tão logo exista disponibilidade para o sistema executá-las, elas não precisam ocorrer em sequência.
Suponha, por exemplo, que um sistema que você crie irá efetuar pesquisas por passagens aéreas em diversas companhias aéreas. Você não precisa pesquisar a companhia A primeiro para depois pesquisar a companhia B, depois a C, depois a D e assim sucessivamente. Você pode disparar quatro consultas ao mesmo tempo aos sistemas das quatro companhias, e, à medida que os resultados vão sendo processados e comunicados ao seu sistema, você poderá apresentá-los ao seu usuário.
A representação de uma concorrência é a de um “garfo”. Para posterior junção, utiliza-se a função de sincronização. Veja para o cenário descrito no exemplo acima, poderíamos ter uma representação simplificada assim:
|
Identificar uma oportunidade de concorrência não significa a definição de um requisito de concorrência, mas tão somente uma melhor forma de se fazer um determinado trabalho. A definição do requisito deve ser feita por meio de documento específico ou caso de uso, ambos provindos de entrevistas com os usuários da aplicação (ou demandantes da aplicação). |