And what if I want to short-circuit "continue;" in my thread's run loop? I suspect that's hidden somewhere in a "Don't do this" set of caveats that I couldn't find. Presumably you can't write switch statements within your threads either.
Interesting pattern though. I see the similarity with Duff's device, but hadn't ever really imagined a use for that outside of confusing SOFT1001 students...
The worst one--which to be fair, is specifically warned against on the site--is that you can't really use local variables.
The technique is useful to a point. I used a similar technique for a project and the inability to use locals threw off new hires (who usually created a bug before understanding why).
The bigger problem than educating new users though was that as the number of threads scales up (or grows in hierarchy) you burn more and more CPU time stacking/unstacking your calls just to get to the check that "whoops, this thread should still have been blocked." Between that and implementing preemption, at some point you just have to buckle down and pay for stacks.
The context for a lot of "wireless sensor networks" discussion in the paper is that Adam's research group was primarily focusing on sensor networks at the time.