e nesse vídeo vou falar um pouquinho sobre troca de mensagens que é um morto mecanismo para comunicação entre processos é um mecanismo que é baseado em duas primitivas send eu esse vi são primitivas porque supõe-se que a sua linguagem de programação lá fornecê-las porque você consiga utilizá-las na sua implementação é muito é relativamente simples essas duas primitivas são para você enviar e receber alguma comunicação entre os processos então send a primitiva que vai enviar um uma mensagem para algum processo destino e o steve é uma primitiva que vai receber alguma mensagem de algum processo é
e essas primitivas aqui elas são bloqueantes ou seja quando um determinado pede chamam send se o outro lado não está preparado para receber aquela mensagem ao outro é que fica bloqueado fica esperando aqui os and até que o outro processo entre no esse vem e recebo a mensagem vamos ver como é que ficaria no nosso exemplo simples de um armazém com produtor e esse exemplo então nós temos um produtor que é um thread que possui um método hum que produz itens e adiciona no armazém na implementação do armazém é a diferença podemos usar esse mecanismo
de troca de mensagens é que a implementação do armazém ela também precisa ser um fred é porque a um mecanismo de comunicação entre a um detalhe interessante é que a linguagem de programação java poo java não disponibiliza aquelas primitivas send e o estive tão para simular para simular nós conseguimos simular essas primitivas aqui utilizando sockets e serve sockets tão praça primitivas and eu consigo simular através de um socket que faz uma conexão uma determinada porta e envia uma mensagem e essa é primitiva é possível consigo simular através de um server o socket eu tenho seu
método que tem o seu método accepte que fica aguardando receber uma mensagem recebeu uma conexão então vamos lá nós temos que preparar aqui o nosso produtor e o nosso armazém por eles funcionarem na base do sócrates e do server socket então vamos começar pelo armazém nós temos que tornar uma cred certo consequentemente ele terá um método van e ir para conseguirmos receber a mensagem receber o item que está sendo produzido aqui pelo produtor esse nosso armazém ele vai precisar ter um um objeto server socket o que vai estar vinculado a uma determinada a porta digamos
as portas 56 mil né e dentro desse método urbano esse server socket digamos que ele se chama aqui serve né serve server socket este server vai a entrar que no na chamada do método a 7 lembrem-se que esse método a 7 ele bloqueia a execução né do nosso treino do nosso processo até que chegue alguma conexão até que vem alguma conexão aqui uma vez que ele aceita conexão essa conexão é devolvida como um socket para que seja possível fazer a comunicação entre um servidor eo cliente então o nosso armazém ele vai ter um objeto server
server socket e este server socket na implementação do hum vai ficar parado aqui e quando receber uma mensagem essa mensagem ela vai ver o produtor esse esse método asséptico ele vai ter o mesmo papel aqui do recife vi né da nossa mecanismo de troca de mensagens o produtor por sua vez no momento em que ele quiser enviar um item para esse armazém ele terá que criar um socket abriram sócrates aqui é se de ganso é no endereço ip da máquina onde tá rodando armazém e nessa mesma porta na porta 56.000 que serve a que o
armazém está escutando é lembre-se né que a implementação do sócrates quando você cria um socket e passa aqui os parâmetros de conexão ou você chega um método connect é o seu processo ele fica parado parado aguardando a conexão aguardando que o outro não aceite essa conexão é quando essa conexão aceitar então nosso tanto o nosso armazém vai prosseguir a execução quanto o nosso produtor também vai prosseguir então o que que o produtor vai fazer o produtor vai mandar uma mensagem para mandar uma mensagem aqui envia uma mensagem o pro armazém passando kiwi tem que ele
produziu eu armazém vai receber aqui a mensagem receber a mensagem o e armazenar o item no nosso armazém depois o nosso produtor e encerra aqui a conexão e volta para o laço de repetição produz mais um item tenta me o nova conexão e coloca do mesmo modo né o nosso armazém uma vez que ele recebeu aqui a mensagem ele adicionou item e volta para um laço de repetição para guardar a próxima mensagem e o que que acontece aqui como é que acontece urna a comunicação entre os processos né e uma forma muito parecida como acontecia
com um semáforo ou monitor lembre-se quando o nosso tentamos abrir a conexão aqui no socket é se esse código aqui na nossa implementação só prossegue a partir do momento que essa conexão chega no outro lado e é aceita pelo pelo server socket funciona parecido com o tex né arquivo o ato de abrir a conexão seria o equivalente ao motex o ponto aclive é certo que tenta obter o recurso a do boteco e quem controla esse recurso se ele vai ou não receber esse recurso vai ser aceitação da conexão uma vez que o server socket aceita
conexão é como você receber esse aqui o autorização para continuar execução com isso nós conseguimos quando eu disse simular de uma forma um pouco primitiva mas funcional o mecanismo de troca de mensagens usando socket server sockets