User Tools

Site Tools


at:tutorial:appendix

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
at:tutorial:appendix [2008/07/10 16:02] – added tvcutsemat:tutorial:appendix [2008/07/10 16:12] – * tvcutsem
Line 424: Line 424:
 === Multifutures === === Multifutures ===
  
-The module ''/.at.lang.multifutures'' provides support for multifutures. A multifuture is a future that can be resolved multiple times. We distinguish between 'bounded multifutures', which can be resolved up to a maximum number and 'unbounded multifutures' which have no upper bound. A multifuture accepts  the following listeners:+The module ''/.at.lang.multifutures'' provides support for multifutures. A multifuture is a future that can be resolved multiple times. We distinguish between 'bounded multifutures', which can be resolved up to a maximum number and 'unbounded multifutures' which have no upper bound. 
 + 
 +A multifuture is constructed as follows: 
 +<code> 
 +def [mf, resolver] := makeMultiFuture(n, timeout); 
 +</code> 
 + 
 +The parameter ''n'' indicates the maximum number of values/exceptions with which the future can be resolved/ruined. If ''n'' is ''nil'', the multifuture is unbounded. The timeout parameter is optional. If not nil, it is a timeout period in milliseconds that causes the multifuture to //automatically// become fully resolved after the provided timeout. Once fully resolved, a multifuture will not accept any new values/exceptions, even if it has not reached its "upper bound" ''n'' yet. 
 + 
 +A multifuture accepts the following listeners:
  
 <code> <code>
Line 430: Line 439:
 </code> </code>
  
-This listener is invoked whenever the future is resolved with a new value. Its code can thus be executed multiple times.+The above listener is invoked whenever the future is resolved with a new value. Its code can thus be executed multiple times.
  
 <code> <code>
Line 438: Line 447:
 </code> </code>
  
-This listener invoked if all results have been gathered (only possible if the maximum number of results is known). If there are no exceptions, only the first code block is triggered. If there are only exceptions, the first block is still invoked with an empty value table.+The above listener is invoked if all results have been gathered (only possible if the maximum number of results is known) or when the ''timeout'' period associated with the future has elapsed. ''values'' refers to a table of all resolved values. If there are no exceptions, only the first code block is triggered. If there are only exceptions, the first block is still invoked with an empty table.
  
 Note the following properties of multifutures: Note the following properties of multifutures:
at/tutorial/appendix.txt · Last modified: 2021/09/24 10:28 by elisag