코루틴
- 협력형 멀티 태스킹
[코루틴의 의미]
Co 라는 접두어가 협력을 의미한다면, Routine은 함수, task를 의미한다.
즉, 협력하는 함수라고 생각하자. 실제로 코루틴을 호출할 때에도 메서드 호출처럼 사용한다.
Routine에는 메인루틴과 서브루틴이 존재한다. 코루틴은 메인루틴과 서브루틴이 아닌, 다른 루틴이라고 보면된다.


- 메인 루틴이 서브루틴을 호출하면, 서브루틴의 맨 처음 부분에 진입하여 return문을 만나거나 서브루틴의 닫는 괄호를 만나면 해당 서브루틴을 빠져나오게 된다.
- 코루틴은 진입할 수 있는 진입점도 여러개고, 함수를 빠져나갈 수 있는 탈출점도 여러개다.
- 즉, 코루틴 함수는 꼭 return문이나 마지막 닫는 괄호를 만나지 않더라도, 언제든지 나갈 수 있고, 언제든지 다시 나갔던 지점으로 들어올 수 있다.
[c# 에서의 코루틴 사용]
1. IEnumerator라는 반환형으로 시작
2. yield return 이 반드시 함수 내부에 존재
코루틴은 다음과 같이 호출한다.
StartCoroutine( 메소드이름( 매개변수1, 매개변수2 ) );
StartCoroutine( "메소드이름", 매개변수 );
yield return 의 종류
1. yield return null; : 다음 프레임에 실행
2. yield return new WaitForSeconds( float ); : 매개변수로 입력한 숫자에 해당하는 초만 큼 기다렸다가 실행
3. yield return new WaitForSecondsRealtime( flaot ); : 매개변수로 입력한 숫자에 해당하는 초만큼 기다렸다가 실행
4. 그외 : yield return + new WaitForFixedUpdate / WaitForEndOfFrame 등
5. yield break;
코루틴과 스레드
스레드
-
- 코루틴은 스레드가 아니라 일반 서브루틴과 비슷한 하나의 루틴이다. 루틴이므로 하나의 스레드에 여러 개가 존재할 수 있다.
=> 코루틴을 사용해 스레드 하나에서 동시성 프로그래밍이 가능하다.
invoke
참고자료
'C# 개념정리' 카테고리의 다른 글
프로세스 / 프로세스와 스레드 (0) | 2024.05.01 |
---|---|
virtual, abstract, interface 개념 (+ override와 overload) (0) | 2024.04.09 |
상속 / base (0) | 2024.04.04 |
클래스와 객체 / 인스턴스화란? / this (0) | 2024.04.03 |