Redes de Computadores 2 - Tutorial
Sincronização
Nos sistemas cliente/servidor não é necessária a utilização de mecanismos especiais para sincronizar o processamento concorrente, pois a passagem de mensagens de comunicação cliente/servidor elimina a necessidade de um sincronismo explícito.
Normalmente esta comunicação é implementada utilizando-se as chamadas de processamento remoto - RPCs (Remote Procedure Calls). Na maioria das aplicações o cliente para de executar após enviar um pedido para o servidor.
Existem alguns mecanismos que permitem que o cliente continue executando após ter envido uma mensagem de pedido. Esse é um cliente não bloqueado que deve lembrar de verificar o resultado mais tarde ou utilizar um mecanismo que interrompa quando o resultado chegar. Mesmo assim , na maioria dos casos o sincronismo ainda está implícito ao mecanismo de passagem de mensagens. Uma exceção é quando o cliente impede que seja interrompido em execuções de códigos críticos, isto acontece em sistemas de tempo real.
No servidor os pedidos de vários clientes podem chegar simultaneamente, ou inclusive chegar um pedido enquanto outro está sendo executado. O servidor deve ter um recurso para por os pedidos em fila ou processá-los ao mesmo tempo. Uma forma para que o servidor possa processar os pedidos concorrentemente é gerar um processo-filho para cada pedido, de qualquer forma o servidor tem que saber para onde enviar as respostas.
A relação mestre/escravo difere da cliente/servidor por não termos um processo mestre governando todas as ações do escravo. Por exemplo, se um servidor gera processos-filhos para executar os pedidos concorrentemente, estes são escravos pois são governados pelo servidor.