Concurrent Futures
Rob Withers
reefedjib at yahoo.com
Sat Oct 27 19:28:08 UTC 2007
That's a nice example. The difference with E's promises is that a Promise
doesn't block for value, it sends the new msg eventually and returns a
second promise. The way I have this implemented in SqueakElib, is you send
#eventual to get an eventual ref, then you can send a msg to the eventual
ref, returning a promise, which you can then send a second msg to, returning
a second promise.
| promise1 promise2 |
promise1 := anObject eventual foo.
promise2 := promise1 bar.
promise1 whenResolved: [:val | Transcript show: ' foo: ', val printString].
promise2 whenResolved: [:val | Transcript show: ' bar: ', val printString].
Transcript show: 'sent foo bar...'
This prevents deadlocks. This is also very interesting when looked at in a
distributed system, using Promise Pipelining. Let us say that anObject
resides in Vat B on a different machine. Instead of having a 2 round trip
communications situation, we have 1 round trip. So instead of
1) send #foo, 2) receive fooResult, 3) send bar, 4) receive barResult
We have:
1) send #foo, 2) send #bar to fooResultPromise, 3) receive barResult.
Where #foo and #bar are both sent to the objects in VatB. They are sent in
the same packet.
Rob
----- Original Message -----
From: "Peter William Lount" <peter at smalltalk.org>
To: "The general-purpose Squeak developers list"
<squeak-dev at lists.squeakfoundation.org>
Sent: Saturday, October 27, 2007 11:21 AM
Subject: Concurrent Futures
> Hi,
>
> This link will be of interest to those wanting easy concurrency. Works
> best for simple cases and can be used as a primitive in building up more
> complex concurrency controls. However, use with caution, especially when
> larger amounts of code are being executed that could conflict with other
> threads is involved. This applies even in the single native thread
> multiple Smalltalk "light weight green" processes environment of most
> Smalltalks.
>
> http://onsmalltalk.com/programming/smalltalk/smalltalk-concurrency-playing-with-futures/
>
> Cheers,
>
> Peter
>
>
More information about the Squeak-dev
mailing list
|