The Concurrent ML Reference Manual

The Multicast structure


signature  MULTICAST
structure Multicast : MULTICAST

Multicast channels provide a mechanism for broadcasting a stream of messages to a collection of threads. Threads receive multicast messages via an output port; each port receives its own copy of every message sent since the port was created. Multicast channels are particularly useful for communicating with a dynamically varying group of threads, since the sender does not need to know how many threads are listening.


type 'a event = 'a CML.event
type 'a mchan
type 'a port
val mChannel : unit -> 'a mchan
val port : 'a mchan -> 'a port
val copy : 'a port -> 'a port
val recv : 'a port -> 'a
val recvEvt : 'a port -> 'a event
val multicast : 'a mchan * 'a -> unit


type 'a mchan
This is the type constructor for asynchronous multicast channels.

type 'a port
This is the type constructor for output ports on an asynchronous multicast channels.

mChannel ()
creates a new multicast channel.

port mc
creates a new output port on the channel mc. The port receives those messages sent after it is created.

copy p
creates a new output port on a channel that has the same state as the port p. I.e., the stream of messages seen on the two ports will be the same. This is useful when two threads need to see the same stream of messages. NOTE: if two (or more) independent threads are reading from p at the time that copy operation is performed, then it may not be accurate.

recv p
gets the next message from the port p. The calling thread is blocked until there is a message available.

recvEvt p
creates an event value that represents the recv operation on the port p.

multicast (mc, v)
multicasts the value v on the channel mc. This is a nonblocking operation.

[ Top | Parent | Contents | Index | Root ]

Last Modified &date;
Comments to John Reppy.
Copyright © 1991-2003 John Reppy