September 23, 2010 [phobos] phobos commit, revision 2046 | ||||
---|---|---|---|---|
| ||||
phobos commit, revision 2046 user: sean msg: Eliminated use of ".field" for Tuple field access now that it's no longer necessary. Fixed the occlusion detection for receive() so that functions returning a value (assumed to be bool) do not occlude following functions accepting the same parameter list. Changed the handling of an OwnerTerminated message so that the OwnerTerminated exception will be thrown immediately on receipt instead of delaying the throw until a receive() is issued where the receive must block and wait for a new message to arrive. Since message arrival is indeterminate (ie. network latency and other factors affect how long it will take for a message to arrive), there was no provable difference between the existing guarantee and the much simpler guarantee that OwnerTerminated is not thrown until all messages have been received from the owner only. Although the early actor model didn't even require messages from a specific sender to arrive in order, experience has shown this guarantee to be too weak for practical use in many scenarios (it's equivalent to having a weak memory model in a SMP system). So std.concurrency will guarantee that all messages from a particular sender will arrive in order and thus the OwnerTerminated message will necessarily be the last message received from the receiver's owner, so when this message is encountered an OwnerTerminated exception will be thrown immediately. Slightly changed the handling of LinkTerminated vs. OwnerTerminated messages so that an OwnerTerminated exception will always be thrown if the sender is the recipient's owner, regardless of any existing links between the processes. The link is broken if it exists though. http://www.dsource.org/projects/phobos/changeset/2046 |
Copyright © 1999-2021 by the D Language Foundation