[Stackless] Re: [Python-Dev] Tcl adept wanted for Stackless problem

Jeff Senn senn at maya.com
Wed Jun 19 19:12:07 CEST 2002


Christian Tismer <tismer at tismer.com> writes:
> The remaining problem is switching of tasklets which contain
> Tcl invocations. I thought so far that this is no problem,
> since these are disjoint contexts, but Jeff Senn reported
> problems as well.
> I fear I have the problem that Tcl thinks it is still using
> the same interp, or it creates a nested one, while the
> tasklets are not nested, but seen as independent. Somehow
> I need to create a new Tcl frame chain for every tasklet
> that uses Tcl.
> Can this be the problem?

I don't think that is *my* problem since I'm pretty sure when I 
restrict the tasklets so as not to do any Tkinter calls, that
doesn't help.

It seems that there may be a problem merely with Stackless and native
threads....

Included below is a test that crashes merely by running tasklets in 2
threads. (Slicing is disabled I believe.)

-- 
-Jas

-----------snip-------------
#run tasklets in 2 threads with auto-scheduling on...
import thread,stackless
def dosome(x):
  stackless.autoschedule_lock(0) #enable auto scheduling
  print thread.get_ident(), "Start",x
  j = 0
  for i in range(1,x):
    j = j + 1
  print "Done",x
  
def uthread(x): x()

def test():
  stackless.autoschedule_lock(0) #enable auto scheduling
  uthread_gen=stackless.taskoutlet(uthread)
  print thread.get_ident(),"add1"
  uthread_gen(lambda x=300000: dosome(x)).run()
  print thread.get_ident(),"add2"
  uthread_gen(lambda x=3001: dosome(x)).run()
  print thread.get_ident(),"add3"
  uthread_gen(lambda x=4003: dosome(x)).run()
  print thread.get_ident(),"add4"
  uthread_gen(lambda x=3002: dosome(x)).run()

thread.start_new_thread(test,())
test()
print "all done"



More information about the Stackless mailing list