Have you looked at the Erlang model? Each Erlang process (green thread) only gets the arguments initially passed in and whatever else it asks for from other running processes. The only shared state is long-running processes created for the purpose of explicitly sharing state.
Yep. The Actor model that Erlang uses is exactly what I was referring to being missing from green thread libraries for other languages (C#, python with greenlet or generators, js with generators)
This is one of the reasons I'm interested in http://0x10c.com/ , when it ever comes out. The assembly language for the game's DCPU-16 is fairly simple. Currently it does take a bit too much to get output on the screen, but with better tooling it could be a viable first language.