[Stackless] Stackless based replacement

Andrew Francis andrewfr_ice at yahoo.com
Thu Oct 16 21:52:40 CEST 2008

Hi Larry:

--- On Wed, 10/15/08, Larry Dickson <ldickson at cuttedge.com> wrote:

> I'm not sure I follow you here: the "mechanism that
> waits for multiple inputs and selects one of them" certainly does not
> look like a channel; it looks like a case statement.
If I understand you correctly, I don't see a big difference (outside of less machinery) between

val = stackless.receive_first([chan1, chan2, ....])

and some construct, let us call it 'synchronizer' (loosely based on the van Aalst workflow pattern - synchronizer). Usually synchronizers are synonymous with barrier synchronization.

val = synchronizer.wait(count) for N consumers, synchronizer.signal(some value) for the producers. In your case, you can wait for one.

chances are channels would be implemented under the hood....

If there is no consumer, a producer blocks. Once a synchronizer is triggered, future producers will raise an exception on a signal until the synchronizer is re-initialized.

Again, I just feel that channels are powerful. However my limited experience has been that scenarios where a single consumer waits on multiple channels can be replaced with a simpler construct that is far more controllable (and use few channels). 



More information about the Stackless mailing list