Some other path has to be explored. It is not currently possible for one thread to yield directly to another thread. I.e. a thread can only yield to the system, which will pick the next thread as it sees fit. Preemprion would work as if the first thread was still running. The idea is fleshed out pretty nicely there.
Threads do afterall have individual signal masks and so on.
There seems to be an inherent conflict in doing a directed yield without bringing in system scheduling and at the same time making sure all parts of the new thread are activated properly. It shouldn't be too bloody difficult though. There is a fatal inherent flaw to such a shell, but it also made an old idea of mine resurface. Obviously you'd want pseudo-german as well. Even considering a pseudo-japanese one is daunting to say the least.