[Stackless] Santa concurrency problem
Carlos Eduardo de Paula
carlosedp at gmail.com
Wed Mar 28 23:25:19 CEST 2007
Based on Christian's last addition for the sleep management, I created
a version of the producer-consumer app using that sleep manager.
The code is here: http://dpaste.com/hold/7549/
If anyone wants to take a look if it has been well used and report
back i will be glad...
Maybe we can get to a place where we can build a utility library
containing these most used functions and classes, like uthread does...
Carlos
On 3/28/07, Brian Zimmer <bzimmer at ziclix.com> wrote:
> But my problem with that one is the example I followed up with where IO
> was occurring in another thread. Since the stackless scheduler knows
> nothing about the IO events being send to the channel the channel can
> not be read until the stackless thread wakes up. That turned me off.
> This definitely appears to be an issue of understanding the app's
> requirements and coding to those rather than offering one catch all
> solution.
>
> thanks, brian
>
> On Mar 28, 2007, at 11:07 AM, Carlos Eduardo de Paula wrote:
>
> > Brian,
> >
> > the last proposed example by richard, where the Sleep manager sleeps
> > while there are no tasklets sleeping is better then the fixed
> > time.sleep(0.001) one... try it out:
> >
> > def ManageSleepingTasklets():
> > while True:
> > if len(sleepingTasklets):
> > endTime = sleepingTasklets[0][0]
> > if endTime <= time.time():
> > channel = sleepingTasklets[0][1]
> > del sleepingTasklets[0]
> > # We have to send something, but it doesn't matter what as it
> > is not used.
> > channel.send(None)
> > elif stackless.getruncount() == 1:
> > # We are the only tasklet running, the rest are blocked on
> > channels sleeping.
> > # We can call time.sleep until the first awakens to avoid a
> > busy wait.
> > delay = endTime - time.time()
> > #print "wait delay", delay
> > time.sleep(max(delay,0))
> > stackless.schedule()
> >
> > Carlos
> >
> >
> > On 3/28/07, Brian Zimmer <bzimmer at ziclix.com> wrote:
> >> I removed all the wxPython code but it still exhibits the same
> >> behaviour as the original sleep in that it pins a cpu in a busy wait.
> >> The best overall solution appears to be (in my limited understanding
> >> of
> >> Stackless) the tiny sleep 0.001 seconds because it doesn't appear to
> >> significantly change the behaviour of the application and keeps the
> >> stackless process out of the top spot in top. Of course this is
> >> highly
> >> dependent on the application, as I'm learning.
> >>
> >> thanks, brian
> >>
> >> On Mar 28, 2007, at 09:16 AM, Christian Tismer wrote:
> >>
> >>>
> >>> On 28.03.2007, at 17:54, Greg Hazel wrote:
> >>>
> >>>>> The code uses a bit of wxPython, but that can be removed.
> >>>>
> >>>> Just a warning - Stackless and wxPython likely have problems
> >>>> together.
> >>>> With greenlets, wxYield can cause serious errors, since it does
> >>>> stack
> >>>> swapping of it's own. On Windows, at least.
> >>>
> >>> Sure, there is a load of things to avoid with wx.
> >>> Mouse events for instance are (were 2 years ago) living
> >>> as a local variable on the stack, so if you want a tasklet
> >>> driven mouse driver (which is very nice), you need to
> >>> save all mouse status in an extra object and pass that to
> >>> the driver.
> >>> wxYield I know nothing about, but using concurrent
> >>> stack switching approaches is of course a bad idea.
> >>>
> >>> As said this example is not about wx, but some idea
> >>> how to patch time-aware behavior into stackless.
> >>>
> >>> ciao -- chris
> >>>
> >>> _______________________________________________
> >>> Stackless mailing list
> >>> Stackless at stackless.com
> >>> http://www.stackless.com/mailman/listinfo/stackless
> >>>
> >>
> >>
> >> _______________________________________________
> >> Stackless mailing list
> >> Stackless at stackless.com
> >> http://www.stackless.com/mailman/listinfo/stackless
> >>
> >
> >
> > --
> > -------------------------------------------------------------------
> > Visit Stackless Examples Project
> > http://code.google.com/p/stacklessexamples/
> > Stackless Python - www.stackless.com
> > -------------------------------------------------------------------
> >
> > _______________________________________________
> > Stackless mailing list
> > Stackless at stackless.com
> > http://www.stackless.com/mailman/listinfo/stackless
> >
>
>
--
-------------------------------------------------------------------
Visit Stackless Examples Project
http://code.google.com/p/stacklessexamples/
Stackless Python - www.stackless.com
-------------------------------------------------------------------
_______________________________________________
Stackless mailing list
Stackless at stackless.com
http://www.stackless.com/mailman/listinfo/stackless
More information about the Stackless
mailing list