Pular para o conteúdo

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çãoNós que ela produz
threadThreadBlock
parallelParallelBlock
awaitAwaitExpression
canaisChannelDeclaration, PulseStatement, WaitStatement

thread#

text
thread        = "thread" bloco ;
dataforge
thread:
    out 1

parallel#

text
paralelo      = "parallel" bloco ;
dataforge
parallel:
    out 1
    out 2

await#

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 1

Estas produções saem de dataforge/gramatica.py. No terminal: dataforge gramatica concorrencia. Volte para a gramática.