Polyphonic C#でのchordの順序はない。
asyncメソッドは非同期で順番は未定義であり、そこからトリガーされるchordメソッドでもasync部は非同期で順序未定義である。
public class AsyncBuffer { public async In1(string s); public async In2(string s); public string Out1() & In1(string s) { return s; } & In2(string s) { return s + s; } public string Out2() & In1(string s) { return s + s + s; } & In2(string s) { return s + s + s + s; } public static void Main() { AsyncBuffer buffer = new AsyncBuffer(); buffer.In1("a"); buffer.In2("b"); buffer.In2("c"); buffer.In1("d"); System.Console.WriteLine("1st: " + buffer.Out1()); System.Console.WriteLine("2nd: " + buffer.Out2()); System.Console.WriteLine("3rd: " + buffer.Out1()); System.Console.WriteLine("4th: " + buffer.Out2()); // 以降は待ち状態 //System.Console.WriteLine("5th: " + buffer.Out2()); } }
このコードの場合、In1やIn2で入れたすべてがOut1、Out2にかかわらず1回づつ出ることは保障するけど、どの順番で出るかは同じメソッドであっても保障しない(実装上は毎回同じ順に出るようになってしまうが)。