<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div>Hi Kristjan:</div><div><br></div><div>Message: 4<br>Date: Fri, 9 Sep 2011 18:37:27 +0000<br>From: Kristj?n Valur J?nsson <<a href="mailto:kristjan@ccpgames.com">kristjan@ccpgames.com</a>><br>To: The Stackless Python Mailing List <<a href="mailto:stackless@stackless.com">stackless@stackless.com</a>><br>Subject: Re: [Stackless] tasklets on threads<br>Message-ID:<br>    <<a href="mailto:EFE3877620384242A686D52278B7CCD3181BA9@RKV-IT-EXCH104.ccp.ad.local">EFE3877620384242A686D52278B7CCD3181BA9@RKV-IT-EXCH104.ccp.ad.local</a>><br>Content-Type: text/plain; charset="iso-8859-1"<br><br>>Btw,
 all of this comes from a desire to hand off jobs to tasklets on other 
threads.  What I am aiming to add is a way to figure out if that thread 
is "blocked", i.e. that it is >waiting for stuff to do.  Since tasklets 
are associated with threads, my current idea is to add an attribute to 
tasklets, something like tasklet.idle, which would be True if that 
>tasklet's thread is idle.   A pool of such threads could then be 
maintained and a job can be handed off to one of them, depending on 
their idlestate, using channels.  No need to >mess around with locks and 
condition variables and whatnot.</div><div><br></div><div>I haven't used tasklets with other threads for a while. I figure the motivation to spawn threads is to isolate operations that are CPU intensive or potentially long blocking. Here is a suggestion, inspired in part by the Go language. Create new stackless function that would a create secondary schedulers that run in new thread. Abstract away thread creation. Secondary schedulers would work like the main scheduler with one exception: if there is at least one tasklet is blocked on a channel shared by another tasklet/scheduler, the secondary scheduler (and with it the thread) will not terminate. </div><div><br></div><div>Cheers,</div><div>Andrew<br></div></div></body></html>