Futures, IOUs, and Escrows
Future—A thread synchronization mechanism. A future can be thought of as placeholder or proxy for the eventual result produced by an asynchronous operation. A future is produced when an asynchronous operation is launched.
Once created, the future is immediately made available to any parties interested in the results of that operation. Any thread that attempts to evaluate or redeem the future before the associated operation has produced a result is delayed until a result is available. The result is returned immediately when the future is redeemed after a result has been produced.
IOU—In the Interthread Communication package, a future is called an IOU. An IOU consists of one or more IOU handles that reference another entity called an
escrow object.
Escrow object—Accepts the result of an operation and implements the synchronization policy that delays any threads attempting to redeem an IOU before a result is available.