Dwqdq
15261 palavras
62 páginas
Projeto de uma Linguagem de ProgramaçãoEste exemplar corrcsponcle à redação final da tese devidamente corrigida e defendida pelo Sr. Claudio Sergio Da !tós de Carvalho c aprovada pela COiuissi"io julgadora.
C;ttll[li11
accept end; in ITEM) do BUFFER (INX) := Ej
WRITE (E:
INX := INX
mod
SIZE
+ 1j
COUNT ::::: COUNT
+ 1; out ITEM)
or
when
COUNT
>
0
=> do accept end; READ (v:
V:= BUFFER (üUTX)j OUTX := OUTX
mod
~
SIZE 1;
+ 1;
COUNT := COUNT
end select; end loop; end BUFFERlNG j
As variáveis INX e OUTX são os índices extremos da parte correntemente utilizada de BUFFER e COUNT indica quantos itens estão nele armazenados. READ pode somente ser aceito quando BUFFER não está vazio (coUNT > O) e WRITE somente pode ser aceito quando BUFFER não está cheio (coUNT < SIZE). É interessante notar que as variáveis INX, OUTX, COUNT são atualizadas fora do rendezvous. Isso permite que a tarefa chamadora continue tão logo quanto possível. O comando
delay especificação_de_tempo
70
adia a execução da tarefa por, no mmtmo, o intervalo de tempo especificado (múltiplo de unidades básicas do relógio de tempo real- dependente de máquina), de tempo predefinido TIME. Um comando delay pode ser usado no lugar de um comando accept fazendo a parte de sincronização de uma alternativa de um comando select. Tal comando pode ser usado para prover um tempo máximo de espera para o comando select. Após o estouro desse intervalo de tempo, 55 se não tiver ocorrido um rendezvous, o comando seguinte ao delay é executado. Se, ao contrário, o rendezvous ocorre antes do intervalo expirar, o comando delay é interrompido e a execução do select continua normalmente.
5.5.4
MC
MC oferece facilidades de multi programação através da utilização de processos. Um processo é uma entidade que apresenta parâmetros, declarações locais e um corpo que pode ser executado em paralelo com outros processos. A declaração de um