On 9 July 2012 18:43, Michael <spark...@gmail.com> wrote: >> On 05/07/12 08:53, Jim Easterbrook wrote: >>> >>> I'm having a problem with pipelines of threaded components sometimes >>> failing to terminate when all the child components have terminated. >> >> >> I think I might have found the answer... >> >> In Axon.ThreadedComponent.threadedcomponent the _threadmain method calls >> Component.component.unpause when the user main method terminates. This >> should wake up the _localmain method, which immediately checks >> self._thethread.isAlive. This could still be true, as _threadmain may not >> yet have terminated. If so, _localmain calls Component.component.pause again >> and goes back to sleep, never to wake up again. >> >> Changing _localmain so it only calls Component.component.pause if >> self._threadrunning is true seems to solve the problem, but I don't know >> what other effects this might have. There are unseen subtleties in this, I'm >> sure. > > This is good to hear. I did take a look last week, but didn't find > anything conclusive. I did find a number of interesting ways to mask > and hide the problem though. It was clear that it was due to a race > between things going to sleep though,so this description looks > plausible. I'll see if I can take a look tonight.
Being realistic, again, it's not likely that I'll get a chance to look at this until the weekend. Michael. -- You received this message because you are subscribed to the Google Groups "kamaelia" group. To post to this group, send email to kamaelia@googlegroups.com. To unsubscribe from this group, send email to kamaelia+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/kamaelia?hl=en.