<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:12pt"><div>Hi Folks:</div><div><br></div><div>As I stated in a previous post, I have written a new version of stackless.py incorporating a concept called join patterns. Join patterns build up on the work I have done with stackless.select(). I am still experimenting with the API amongst other things. So things look rough. When I get stuff stabilized, I'll post a new version of stackless.py in the stackless repository.<br></div><div><br></div><div>With the exception of a hiccup of a recursion limit problem (there is a weird interaction with Twisted), here is the core of the dining philosophers that roughly mimics the example in the paper "Scalable Join Patterns." I left out the Twisted parts.<br></div><div><br></div><div><br></div><div>def thinker(name, thinking, left, right):<br>    global
 pattern<br>    print "Philosopher %s left=%s right=%s" % (name, left.label, right.label)<br>    utensils = stackless.joinPattern([stackless.JoinReceiveChanop(left.receiveCase()), \<br>                                      stackless.JoinReceiveChanop(right.receiveCase())])<br>    patterns.append(utensils)<br><br>    while True:<br>       waitTime = random.randint(thinking[0], thinking[1])<br>       print name, "thinking for ", waitTime, "time units"<br>       tick(waitTime)<br>       print name, "ready to eat"<br>       result =
 stackless.select([utensils])<br>       for p in result:<br>           print p.value, " relenquished chopstick ", p.channel.label<br><br>       utensils.reset()<br><br>       print name, " finished eating"<br>       release(left, name)<br>       release(right, name)<br></div><div><br></div><div>Since I didn't build buffered channels into the new stackless.py, I have to do asynchrony in the following way:</div><div><br></div><div>def release(aChannel, name):<br>    def __release():<br>        aChannel.send(name)<br>    stackless.tasklet(__release)()<br></div><div><br></div><div>I would appreciate
 feedback.</div><div><br></div><div>Cheers,</div><div>Andrew<br></div><br><div></div></div></body></html>