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.
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.