[Stackless] must be something simple
Kristján Valur Jónsson
kristjan at ccpgames.com
Fri May 24 15:15:31 CEST 2013
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: stackless-bounces at stackless.com [mailto:stackless-bounces at stackless.com] 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
lars at rational-it.com<mailto:lars at rational-it.com>
+31 6 26 88 55 39
====================================
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.stackless.com/pipermail/stackless/attachments/20130524/a62d2568/attachment-0001.html>
More information about the Stackless
mailing list