c# coroutine
[C#] 코루틴 (COROUTINE) (3)
1. 코루틴 예제 using System; using System.Collections; using System.Collections.Generic; class Program { // SUBROUTINE public static int Foo() { Console.WriteLine("1"); return 10; Console.WriteLine("2"); return 20; Console.WriteLine("3"); return 30; Console.WriteLine("4"); return 40; Console.WriteLine("5"); return 50; } static void Main() { int n1 = Foo(); int n2 = Foo(); Console.WriteLine($"{n1}, {n..
[C#] 코루틴 (COROUTINE) (2)
1. 핵심 정리 using System; using System.Collections; using System.Collections.Generic; class Node { public int data; public Node next; public Node(int d, Node n) { data = d; next = n; } } // 열거자 class IntLinkedListEnumerator : IEnumerator { public Node head = null; public Node current = null; public IntLinkedListEnumerator(Node n) { head = n; } public object Current => current.data; public bool Move..
[C#] 코루틴 (COROUTINE) (1)
1. 코루틴(COROUTINE) 이란? 위 그림은 일반적인 메소드의 동작을 그림으로 표현한 것이다. 메소드를 호출하면 해당 메소드의 동작을 처리하고 다시 메소드를 호출한 부분으로 돌아간다. 일반적인 메소드라면 위와 같이 동작하는게 일반적인 원칙이다. 그리고 이렇게 동작하는 Foo를 예전에 Sub-Routine이라고 부른적이 있다. 그렇다면 코루틴은 어떤식으로 동작을 할까? Co-Routine은 위와 같이 동작한다. 메소드를 호출하게 되면 메소드의 내용을 전부 실행하는게 아닌 일부만을 실행하고 다시 메소드를 호출한 부분으로 돌아온다. 또 코드가 실행되던 중 Foo( ); 를 만나게 되면 이번엔 Foo( ) 메소드의 처음 부분이 아닌 이전에 끊겼던 부분부터 이어서 실행을 하게 된다. 한번에 Foo( )의 모..