[Stackless] Google's new Go programming language

Andrew Francis andrewfr_ice at yahoo.com
Mon Nov 23 19:55:23 CET 2009


Hi Larry:

> Select (on inputs) requires single-receiver channels.
> Multiple senders are OK. Given that restriction, a select
> can be implemented without race conditions.

I think Jeff correctly assessed the situation. Between the
time the tasklet leaves select() and performs the channel
operation, the state of the channels could change. This
would most likely mean 

1) The selected channel when unblocked, was placed at the end of the 
runnable list, allowing other tasklets to change the state of the 
selected channel.

2) Between select() and a channel operation, the tasklet in question
did something to cause a context switch and allow another tasklet to
change the state of the selected channel.

Cheers,
Andrew


      




More information about the Stackless mailing list