Ho provato a ottenere due compiti (coroutine) per collaborare, ma senza risultato. Di seguito è quello che ho. Non vedo mai i valori di stampa dalle funzioni source o sink e la chiamata wait() sembra bloccarsi per sempre. Ho anche provato a rendere l'attività p (source) una variabile globale, invece di passarla a sink() come argomento, ma non sembra funzionare neanche (anche quando la dichiaro all'interno di sinke() come globale.Julia: passaggio di dati tra coroutine (attività)
Questo è il tipo di cosa che ho scoperto che posso fare molto facilmente con canali e goroutines a Go.
ho anche sperimentato con chiamando yieldto() all'interno della sorgente() e lavandino() funzioni, ma io sembrano ancora finire in stallo.
Chiunque con un esempio di più attività di condivisione dei dati in qualche modo? Idealmente, avrei un oleodotto o lunga catena di attività.
Grazie in anticipo per il vostro aiuto.
println("Hello")
function source()
println("source start")
produce("start")
produce("stop")
end
function sink(p::Task)
println("sink start")
println(consume(p))
println(consume(p))
end
a = Task(source)
b = Task(() -> sink(a) )
wait(b)
wait(a)
println("Goodbye")
Ottimo! Grazie per la risposta chiara. Vedo che Julia dà un controllo molto più fine sulle coroutine. Apprezzo il vostro aiuto. –