[Stackless] Calling a tasklet with a return value with the C API
Kristján Valur Jónsson
kristjan at ccpgames.com
Tue Dec 29 13:12:02 CET 2009
producers[int(ind)] = stackless.tasklet(producer)(ind,sleeptime)
this line will create a tasklet bound to the "producer" callable, bind it to (ind, sleeptime) and return it to the "producers" list.
Setting up a tasklet simply returns the same tasklet object, exactly so that you can do the following:
producers[int(ind)] = stackless.tasklet(producer)
producers[int(ind)](ind, sleeptime)
in one line.
There is no "return value" from the tasklet in play here.
in short:
stackless.tasklet.__call__(self, *args)
returns self.
K
From: stackless-bounces at stackless.com [mailto:stackless-bounces at stackless.com] On Behalf Of A M
Sent: 29. desember 2009 09:09
To: stackless at stackless.com
Subject: [Stackless] Calling a tasklet with a return value with the C API
After a few years of scouring the Internet for example code and viewing the very sparse documentation on the subject, I have been able to successfully utilize almost all aspects of the C API with regard to stackless python. I feel pretty comfortable with most all functions declared in stackless_api.h.
However, there is one thing I cannot figure out and cannot find an example for anywhere: running a tasklet with the C API that returns a value. Take, for example, this python code from one of the stackless python examples online (http://stacklessexamples.googlecode.com/svn/trunk/examples/producerConsumerTextmode.py):
-----------
def launch_p (ind,sleeptime): # Launches and initializes the producers lists
producers.append(int(ind))
p_counter.append(0)
producers[int(ind)] = stackless.tasklet(producer)(ind,sleeptime)
------------
The last line is the one that I have no idea how to recreate. Certainly, creating a tasklet, setting it up, and running it is trivial; however, I cannot for the life of me figure out how you would get a return value with the C API. My initial thought was perhaps the results are sent back on a 'channel'; however, I do not see any documentation that supports that, nor can I find any examples of it.
Anyway, can anyone help me out with this? It's keeping me awake at night! If not, can someone give me a contact address for one of the developers of stackless that wrote the C API for it?
Thanks
Andy
ps. By the way, does anyone know why this link indicates that it's the C/C++ API for stackless 2.6.4 but has none of the stackless functions within it? -> http://www.disinterest.org/resource/stackless/2.6.4-docs-html/c-api/index.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.stackless.com/pipermail/stackless/attachments/20091229/d3d6474f/attachment.htm>
More information about the Stackless
mailing list