Programação
concorrente
Tempo máximo para a recepção de uma mensagem
A primitiva receive pode ser refinada com um timeout opcional. A sintaxe completa passa então a ser a seguinte:
Timeout é um inteiro (ou uma expressão que devolva um inteiro), interpretado como um tempo dado em milisegundos. A precisão deste timeout depende, obviamente, do sistema operativo.
receive
Mensagem1 [when Guard1] ->
Acção1;
Mensagem2 [when Guard2] ->
Acção2;
...
after Timeout ->
AcçãoT
end.
Se nenhuma mensagem for seleccionada pelo receive durante o período de tempo indicado, a acção indicada em AcçãoT é avaliada.
Dois valores para o timeout têm um significado especial:
Exercícios
1) Implemente um processo que, se não receber mensagens de cinco em cinco segundos, imprime no ecrã "À espera de mensagens...". Este processo deve tratar as seguintes mensagens:
2) Implemente um processo que simule um cronómetro digital da forma
"Minutos:Segundos".
Deverão ser desenvolvidas as funções de interacção com o processo: