Channel

Definitions

def buffered(rc: Region[r], n: Int32): (Sender[t, r], Receiver[t, r]) \ r Source
def recv(receiver: Receiver[t, r]): t \ r Source

Receives a message from the given channel r.

Blocks until a message is dequeued.

def send(m: t, sender: Sender[t, r]): Unit \ r with Sendable[t] Source

Sends the message m on the given channel s.

Blocks until the message is enqueued.

def timeout(rc: Region[r], d: Duration): Receiver[Unit, r] \ r + IO Source

Returns a channel that receives the Unit message after duration d.

def unbuffered(rc: Region[r]): (Sender[t, r], Receiver[t, r]) \ r Source

Returns a new unbuffered channel (i.e. a channel with zero capacity).

def unsafeSend(m: t, sender: Sender[t, r]): Unit \ r Source

Sends the message m on the given channel s.

Blocks until the message is enqueued.

Identical to send but doesn't require Sendable. It is up to programmer to ensure that race conditions cannot arise due to concurrent access to m.