<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">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">Of all the links you have been given, put this one at the top of your list.&nbsp; Commit to spending an half hour reading, much less than this thread!&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">&gt;&nbsp;&nbsp;&nbsp; (concerning distributed programming, and event-loop concurrency)<BR>&gt;&nbsp;&nbsp;&nbsp; <A href="http://www.erights.org/elib/index.html" target=_blank rel=nofollow><FONT color=#0000ff>http://www.erights.org/elib/index.html</FONT></A><BR><BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">I also wasn't as clear as I could have been.</DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR>&gt; When a message is sitting in an inbound queue on a process waiting </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; for that process to do get to it it is in essence blocked until it gets </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; processed. If the process is only processing one inbound message at </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; once it is possible for a dead lock to occur when multiple processes </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; are in a similar situation with each other. Both processes waiting for </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; the message that would let them continue which is sitting blocked on </DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">&gt; the other's queue. That's all. Classic deadlock case. <BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif">Ok, with your terminology, and some of mine, a message in a queue feeding a&nbsp;Vat is blocked until the&nbsp;Vat gets to it.&nbsp; Ditto with Vat 2.&nbsp; The mistake in your classic deadlock case is to assume that the message could also get blocked because it is waiting on the msg in Vat 2.&nbsp; This does not happen.&nbsp; If there was an unresolved reference waiting on resolution from a remote computation, it is represented as a promise.&nbsp; So message 1 would have a promise for the outcome of message 2.&nbsp; It would NOT be on the queue for Vat 1.&nbsp; It would be sitting as the argument in a #whenMoreResolved msg to the promise.&nbsp; And when that promise resolves, it would then run.&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">Now, you are further saying that promise will not resolve because both are mutually dependent on each others results.&nbsp; So you are saying that in a sense they are deadlocked.&nbsp; Again this cannot happen.&nbsp; There is no way for you to kick off computation 1, with the promise to computation 2, unless the computation 2 had already been kicked off.&nbsp; DItto for the other direction.&nbsp; So it is impossible to construct this promise deadlock.<BR></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></body></html>