理想のシミュレーション言語

理想のシミュレーション言語を考えている。
条件は、指定時間だけシミュレーション時間で wait してもメソッドが分断されないことである。

Console.WriteLine("Now {0}", SimSystem.Instance.Now);
WAIT 10
Console.WriteLine("Now {0}", SimSystem.Instance.Now);

例えば、上記のメソッドを持つ2つのオブジェクトについて、それぞれ、時刻3と時刻5で実行すると、「Now 3 Now 5 Now 13 Now 15」と出力される。すなわち、WAITのところで、別メソッドに飛び、別メソッドの処理後に、同じ位置に戻って実行を継続できる。Cだとlongjumpでできなくもないが、スタックは壊れるし、当然ローカル変数はおかしくなると思う。
独自の言語でないと難しいと思っていたが、シングルスレッドでも、C#で制限つきで可能である。 ILでは分断されるのだが、プログラムは分断されずに書ける。ローカル変数も問題なく使える。勘がいい人は、想像できるだろう。