ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP.pm
(Generate patch)

Comparing AnyEvent-MP/MP.pm (file contents):
Revision 1.65 by root, Fri Aug 28 01:00:34 2009 UTC vs.
Revision 1.66 by root, Fri Aug 28 01:07:24 2009 UTC

708 708
709Erlang makes few guarantees on messages delivery - messages can get lost 709Erlang makes few guarantees on messages delivery - messages can get lost
710without any of the processes realising it (i.e. you send messages a, b, 710without any of the processes realising it (i.e. you send messages a, b,
711and c, and the other side only receives messages a and c). 711and c, and the other side only receives messages a and c).
712 712
713AEMP guarantees correct ordering, and the guarantee that there are no 713AEMP guarantees correct ordering, and the guarantee that after one message
714holes in the message sequence. 714is lost, all following ones sent to the same port are lost as well, until
715 715monitoring raises an error, so there are no silent "holes" in the message
716=item * In Erlang, processes can be declared dead and later be found to be 716sequence.
717alive.
718
719In Erlang it can happen that a monitored process is declared dead and
720linked processes get killed, but later it turns out that the process is
721still alive - and can receive messages.
722
723In AEMP, when port monitoring detects a port as dead, then that port will
724eventually be killed - it cannot happen that a node detects a port as dead
725and then later sends messages to it, finding it is still alive.
726 717
727=item * Erlang can send messages to the wrong port, AEMP does not. 718=item * Erlang can send messages to the wrong port, AEMP does not.
728 719
729In Erlang it is quite likely that a node that restarts reuses a process ID 720In Erlang it is quite likely that a node that restarts reuses a process ID
730known to other nodes for a completely different process, causing messages 721known to other nodes for a completely different process, causing messages
734around in the network will not be sent to an unrelated port. 725around in the network will not be sent to an unrelated port.
735 726
736=item * Erlang uses unprotected connections, AEMP uses secure 727=item * Erlang uses unprotected connections, AEMP uses secure
737authentication and can use TLS. 728authentication and can use TLS.
738 729
739AEMP can use a proven protocol - SSL/TLS - to protect connections and 730AEMP can use a proven protocol - TLS - to protect connections and
740securely authenticate nodes. 731securely authenticate nodes.
741 732
742=item * The AEMP protocol is optimised for both text-based and binary 733=item * The AEMP protocol is optimised for both text-based and binary
743communications. 734communications.
744 735
745The AEMP protocol, unlike the Erlang protocol, supports both 736The AEMP protocol, unlike the Erlang protocol, supports both programming
746language-independent text-only protocols (good for debugging) and binary, 737language independent text-only protocols (good for debugging) and binary,
747language-specific serialisers (e.g. Storable). 738language-specific serialisers (e.g. Storable).
748 739
749It has also been carefully designed to be implementable in other languages 740It has also been carefully designed to be implementable in other languages
750with a minimum of work while gracefully degrading fucntionality to make the 741with a minimum of work while gracefully degrading functionality to make the
751protocol simple. 742protocol simple.
752 743
753=item * AEMP has more flexible monitoring options than Erlang. 744=item * AEMP has more flexible monitoring options than Erlang.
754 745
755In Erlang, you can chose to receive I<all> exit signals as messages 746In Erlang, you can chose to receive I<all> exit signals as messages

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines