I did in the past and making some emulators for old hardware where temporary suspending action is useful
First of all, if I read this thread correct (maybe not?) then it always only worked on some OS? And on those you can still call the OS API directly?
My first question would have been, why? A thread needs to be suspended if it has nothing to do, that the thread knows itself, so it can "pause" itself when appropriate. Even if it has to tell another thread, that it did finish the work, it would not have any need to keep going until that other thread would suspend it.
But I guess, you try
to pause a busy thread? And for some reason prefer not to need to check regularly for some flag?
The problem is, that a lot of code will enter critical section or other thread-sync/lock constructs. Even if you don't think it will. E.g. memory managers may (I don't know which ones will, or wont, but unless you have proof the one you use doesn't, assume it does.
Then your problem is, if your thread used anything that could alloc/free mem, and you suspend it in the wrong moment, all your other threads will start locking if they too use alloc/free.
Yes, apparently you done suspend for a long time, and it hasn't happen to you yet. That is the nature of race conditions. I don't know if you distribute the software in question. But if it hangs on 5 to 10% of your users, say once every 6 month, and they can't reproduce it, and aren't sure it wasn't something else with their system => they wont even report it.
Well,... just my 2 cents.