Ich habe versucht, zwei Aufgaben (Koroutinen) zu kooperieren, aber ohne Erfolg. Unten ist was ich habe. Ich sehe nie die Printlns von Source- oder Sink-Funktionen, und der wait() - Aufruf scheint für immer zu hängen. Ich habe auch versucht, die p (source) -Aufgabe zu einer globalen Variable zu machen, anstatt sie als Argument an sink() zu übergeben, aber das scheint auch nicht zu funktionieren (selbst wenn ich es innerhalb von sinke() als global deklariere.Julia: Übergabe von Daten zwischen Coroutinen (Aufgaben)
Dieseist die Art von Dingen, die ich entdeckte, was ich tun kann sehr leicht mit den Kanälen und goroutines in Go.
ich habe auch mit Aufruf yieldto() innerhalb der Quelle() und Waschbecken() Funktionen experimentiert, aber ich noch scheinen in einer Sackgasse zu enden.
jeder, der ein Beispiel von mehreren Aufgaben Daten in irgendeiner Art und Weise zu teilen? Idealerweise weise~~POS=HEADCOMP würde ich eine Pipeline haben oder lange Kette von Aufgaben.
Vielen Dank im Voraus für Ihre Hilfe.
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")
Großartig! Danke für die klare Antwort. Ich kann sehen, dass Julia viel feinkörniger Kontrolle über Koroutinen gibt. Ich schätze Ihre Hilfe. –