I'm in the middle of reading "Windows Internals 6th edition", and after mentioning 32 bit threads running on 64 bit Windows have 3 stacks, one user-mode 32-bit, a 64-bit user-mode, and a kernel-mode stack (along with a 32 bit CONTEXT and a 64 bit CONTEXT "block")--when it proceeds to explain "fibers" (as opposed to threads) it doesn't specify stack/context information.
After threads are converted to fibers for user-mode task scheduling, do they retain the same properties as threads? It seems the book goes on to mention the 64-bit only UMS threads are superior to fibers as they have the kernel-stack (to my understanding)--is this correct?
Finally, since UMS threads are visible to the kernel because they have a kernel stack (the book says "kernel thread state" and I assume it means a stack) does this mean "Fibers" are completely invisible while they perform user-mode scheduling, and appear as a single thread in the application?
If one were to peek at taskmanager running an application using fibers I suppose the question could be answered by the "thread count"?

Thanks if you actually read it all.
Regards,
happyhacker

Recommended Answers

All 2 Replies

Not only are fibers invisible to the kernel but they are invisible to all other threads. Fibers can only call other fibers and fibers never exit. Here is a decent article about c++ fiber class.

So then yes fibers have the thread's stack and context stuff.
Thanks.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.