View source code
Display the source code in std/concurrency.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Function std.concurrency.receive
Receives a message from another thread.
void receive(T...)
(
T ops
);
Receive a message from another thread, or block if no messages of the specified types are available. This function works by pattern matching a message against a set of delegates and executing the first match found.
If a delegate that accepts a Variant
is included as
the last argument to receive
, it will match any message that was not
matched by an earlier delegate. If more than one argument is sent,
the Variant
will contain a Tuple
of all values
sent.
Parameters
Name | Description |
---|---|
ops | Variadic list of function pointers and delegates. Entries in this list must not occlude later entries. |
Throws
OwnerTerminated
when the sending thread was terminated.
Example
import std .variant : Variant;
auto process = ()
{
receive(
(int i) { ownerTid .send(1); },
(double f) { ownerTid .send(2); },
(Variant v) { ownerTid .send(3); }
);
};
{
auto tid = spawn(process);
send(tid, 42);
writeln(receiveOnly!int); // 1
}
{
auto tid = spawn(process);
send(tid, 3.14);
writeln(receiveOnly!int); // 2
}
{
auto tid = spawn(process);
send(tid, "something else");
writeln(receiveOnly!int); // 3
}
Authors
Sean Kelly, Alex Rønne Petersen, Martin Nowak
License
Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.