<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Hi Peter, </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">My response here is not formatted as I would wish, but is the imit of my current technology.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR>I work on SqueakElib, and though I am certainly no expert on E,&nbsp;I am somewhat familiar with it's design and implementation.&nbsp; That said, a comment you made caught my eye...</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR>&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; ----- Original Message ----<BR>&gt; From: Peter William Lount <A href="mailto:peter@smalltalk.org" target=_blank rel=nofollow ymailto="mailto:peter@smalltalk.org">peter@smalltalk.org</A><BR>&gt; </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; If a number of messages are waiting in the input queue of a process </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; that can only process one message at a time since it's not multi-threaded </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; then those messages are BLOCKED while in the thread. Now imagine </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; another process with messages in it's queue that are also BLOCKED </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; since they are waiting in the queue and only one message can be </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; processed at a time. Now imagine that process A and process B each </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; have messages that the other needs before it can proceed but those </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; messages are BLOCKED waiting for processing in the queues. <BR>&gt; <BR>&gt; This is a real example of what can happen with message queues. The </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; order isn't guaranteed. Simple concurrency solutions often have deadlock </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; scenarios. This can occur when objects must synchronize events or </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; information. As soon as you have multiple threads of execution you've got </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; problems that need solving regardless of the concurrency model in place. <BR><BR>Messages don't get blocked, when they are queued for the Vat (thread/process)&nbsp;to service them.&nbsp; They do get queued when they are sent to a Promise, but it does not affect the Vat.&nbsp; When the Promise resolves, the messages are forwarded to the Vat for processing, in order, so partial msg ordering is maintained.&nbsp; </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Msg ordering is partial because of this case:&nbsp;object a in Vat A, object b in Vat B, and object c in Vat C are intercommunicating.&nbsp; Both b and c have references to a.&nbsp;&nbsp; At time t1, b sends msg m1 to a, at time t2, c sends msg m2 to a, but there is higher network latency for b, so m2 gets to a at t3 and m1 gets to a at t4 and they are out of order from the remote invocation order.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">I hope this helps.&nbsp; Read more about Elib.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&nbsp;</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">cheers,</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Rob</DIV></DIV></DIV><BR></DIV></div></body></html>