C#の非同期フローを示すために、簡単なプログラム (Pythonとの相違点を示すために、GILのためにPythonが同期しているため)を作成しました。C#プログラムの非同期フロー
なぜ関数func2()関数func1を待っているの実行がある()を終了するには?関数func1()で
void main()
{
Console.WriteLine("main");
func1();
func2();
}
public void func1()
{
Console.WriteLine("func1");
double i = 0;
while(true)
{
i += 1;
if (i > 100000000)
{
break;
}
}
func(3);
func(4);
}
public void func2()
{
Console.WriteLine("func2");
func(5);
func(6);
}
public void func(int number)
{
Console.WriteLine(number);
}
は、私がメイン()関数func2を続けると呼んように、プログラムウェイトを作るためにループを実行しています()FUNC前(3)及びFUNC(4)。しかし、すべての時間は、それがこの順で同期ファッションやプリント出力で動作します:
main
func1
3
4
func2
5
6
すなわち関数func2()は、常に私は、非同期の流れに期待していなかったFUNC4()後に呼び出されます。
なぜ関数func2()関数func1を待っているの実行がある()を終了するには?
おかげ
「async」キーワードについて読んでください。あなたはそれ以外の場合は、彼らはPythonは可能性が順番 – Ghost
に行われる必要があると仮定します、それは非同期で物事を行うには大丈夫だプログラムを指示する必要があり、非同期すぎ... –
サイドノート:考えるが、「スクリプト」の独自の定義を考え出すていませんか、 "プログラミング" - これはあなたのポストの周りで不要な議論を引き起こす可能性があります。それは本当にあなたの質問に関連していません。 –