Re: is it possible to switch between threads manually.
On Oct 4, 12:29 pm, "Alf P. Steinbach" <al...@start.no> wrote:
* James Kanze:
Just curious, but are "fibers" something like co-processes?
You mean co-routines.
Yes, that's the word.
Yes, they are co-routines.
(I'd completely forgotten that technique. It's been a long time
since I last used it.)
It's been a long time since I last implemented it (then in terms of
longjmp + a little assembly, it was a fad around 1990).
I think it was around 1985, or a little before, that I last used
it. But I think it was really at the base of the USL threading
package---as you say, with longjmp, etc. (In my earlier case,
it was a lot simpler: I just had two stacks, one for the main
process, and the other for the co-process. And a special
function which swapped the stack pointer. This was all in
assembler, so I just passed parameters and return values in
But the interesting thing is that co-routines are so useful
that they have been implemented in terms of e.g. Java threads,
where the efficiency argument is void. And Windows API fibers
are seemingly implemented in terms of Windows threads: you
start with threads and convert them to fibers.
Well, co-routines are very much like non pre-emptive threads.
Which makes thread safety an order or two of magnitude simpler.
From the description of others, I gather that threads/fibers are
about what Unix (or at least Solaris) called LWP/threads. For
the most part, my impression is that Unix (or at least Solaris)
is moving away from that---kernel threads (the earlier LWP) have
gotten to the point that they're fast enough that you don't need
anything even lower level.
James Kanze (GABI Software) email:email@example.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34