sich das folgende Erlang-Code:Wie kann Haskells TChan Nachrichten wie Erlangs Nachrichtenwarteschlangen verzögern?
-module(testit).
-export([testit/0]).
testit() ->
Pid = spawn(fun testit_proc/0),
Pid ! final,
Pid ! one,
Pid ! two,
io:format("Root finished~n").
testit_proc() ->
receive
one -> io:format("One~n");
two -> io:format("Two~n")
end,
receive
one -> io:format("One~n");
two -> io:format("Two~n")
end,
receive
one -> io:format("One~n");
two -> io:format("Two~n");
final -> io:format("Final~n")
end,
io:format("Spawn finished~n").
Der Ausgang ist:
Root finished
One
Two
Final
Spawn finished
Die Verarbeitung der final
Nachricht wird im wesentlichen bis der latenten letzte Block aufgrund der vorherigen Muster erhalten erhalten keine passende, dass Botschaft.
Wie machst du das mit Haskells TChan?
Einverstanden. Diese Semantik gibt es in den grundlegenden 'Chan'- oder' TChan'-Paketen nicht - Sie müssen selbst eine Zurückstellungswarteschlange implementieren. –