Avançar para o conteúdo principal

Mensagens

A mostrar mensagens de Abril, 2012

Concorrência Parte III - Sincronização

O mecanismo de sincronização apresentado no post anterior (join) é muito rudimentar. Para situações mais complexas como quando pretendemos que várias threads partilhei o mesmo recurso, como por exemplo uma impressora ou um ficheiro. Várias threads a concorrer em tempo de execução pelo acesso a outra thread Vamos simular uma situação em que uma impressora é partilhada por vários utilizadores, assim todos devem poder enviar trabalhos para serem impressos, no entanto quando a impressora estiver a imprimir um trabalho não deve interromper essa tarefa para iniciar a impressão de outro utilizador. Como se pode ver nesta imagem o trabalho do utilizador 3 foi interrompido por outro trabalho do utilizador 6. De modo a garantir que uma parte de código não é interrompida temos de a definir como sendo uma secção crítica, criando assim um bloco atómico de código que não pode ser interrompido. Neste exemplo a parte crítica do código é o processo de impressão, assim utilizamos a instrução lock no cód