kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #22803
Re: KiCad Coroutines
On Wed, Jan 20, 2016 at 11:58:56PM +0100, "Torsten Hüter" wrote:
> * It's very tricky to get stackful implementations to run stable. Any small fault results in a crash or deadlock.
What's strange in that? When doing pointers even small faults give you a crash (if you are lucky :D).
> * The most critical part is stack handling. For Windows Fibers / Pthreads the library does the job. There are also
> some hacks to get Setjmp()/Longjmp() working with multiple stacks, as Jean-Pauls link has shown, I've tried it but that was crashing (Setjmp()/Longjmp() seems to be broken too on MinGW64).
longjmp is not guaranteed between 'contexts', so that would be expected too...
> * Side effects / show stoppers: It's not recommened to use threads for the wxWidgets GUI, OpenGL requires a context switch per thread.
Not a problem, we already declared that all the UI work is done in event handlers (as it should be)
> * As already known, Boost::Context is broken on Msys2 - makes it sense that such a low level library has to be maintained by KiCad developers (?)
Otherwise just hope that boost people fix that!
> * Is context switching always safe (side effects with 3rd party libraries / Python etc.)?
Context as in thread usually yes, if you are not running concurrently... thread safety *usually* means proper locking of shared data structures
> Stackless coroutines:
> ---------------------
>
> * Relative easy to handle, because based on switch()/case().
> * Safer, a wrong state causes only the exit of the coroutine but not a crash.
> * Simple implementation
Simple?!? Well, maybe implementing but maintaining is another thing...
In my experience once you do the stack initialization correctly the
setjmp/longjmp is the 'best' coroutine you can do; the non-portable code
is relegated to the coroutine creation code so it's easily locked away
in some untouchable source file :P
OTOH I never did that on Win32/64 so maybe it's totally undependable to work :D
Isn't there some MSDN article on doing that?
--
Lorenzo Marcantonio
CZ Srl - Parma
Attachment:
signature.asc
Description: PGP signature
Follow ups
References
-
Re: KiCad Coroutines
From: Wayne Stambaugh, 2016-01-06
-
Re: KiCad Coroutines
From: Torsten Hüter, 2016-01-07
-
Re: KiCad Coroutines
From: jp charras, 2016-01-07
-
Re: KiCad Coroutines
From: Lorenzo Marcantonio, 2016-01-07
-
Re: KiCad Coroutines
From: jp charras, 2016-01-07
-
Re: KiCad Coroutines
From: Mário Luzeiro, 2016-01-07
-
Re: KiCad Coroutines
From: Lorenzo Marcantonio, 2016-01-07
-
Re: KiCad Coroutines
From: Tomasz Wlostowski, 2016-01-07
-
Re: KiCad Coroutines
From: Torsten Hüter, 2016-01-15
-
Re: KiCad Coroutines
From: Torsten Hüter, 2016-01-20