Because channels are not queues. If there is no one waiting to receive, then channel.send() blocks. Channels are "rendezvous points" where one tasklets hands over a piece of data to the other. the "preference" only matters if a transaction can take place. In this case, if a receiver had been blocked on channel, then send would indeed not block.
K From: [email protected] [mailto:[email protected]] On Behalf Of lars van Gemerden Sent: 24. maí 2013 09:36 To: The Stackless Python Mailing List Subject: Re: [Stackless] must be something simple Hi, I must be mssing something basic; why does the following not print anything: channel = stackless.channel() channel.preference = 1 def run(a): print channel.send(a) print channel.receive() if __name__ == "__main__": stackless.tasklet(run)("anything") stackless.run() If with preference = 1 the send(..) returns immediately, why doesn't "print channel.send(a)" print "None" or something and why is 'a' never received? Cheers, Lars ==================================== Lars van Gemerden [email protected]<mailto:[email protected]> +31 6 26 88 55 39 ====================================
_______________________________________________ Stackless mailing list [email protected] http://www.stackless.com/mailman/listinfo/stackless
