Gramática — Concorrência
4 produções: thread, parallel, async. Cada exemplo é aceito pelo parser.
A linguagem não sincroniza sozinha. Estas formas criam concorrência; proteger o estado compartilhado é escolha de quem escreve.
| Produção | Nós que ela produz |
|---|---|
thread | ThreadBlock |
parallel | ParallelBlock |
await | AwaitExpression |
canais | ChannelDeclaration, PulseStatement, WaitStatement |
thread#
text
thread = "thread" bloco ;dataforge
thread:
out 1parallel#
text
paralelo = "parallel" bloco ;dataforge
parallel:
out 1
out 2await#
text
esperar = "await" expressao ;dataforge
async action dobro(n):
yield n * 2
out await dobro(21)canais#
text
canal = "channel" nome ;
evento = "pulse" expressao [ "," expressao ] ;
dormir = "wait" expressao ;dataforge
channel fila
fila.send("oi")
pulse "pedido.criado", {"id": 7}
wait 1Estas produções saem de dataforge/gramatica.py. No terminal: dataforge gramatica concorrencia. Volte para a gramática.