• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

코루틴이 병렬처리에요?

19.08.07 16:24 작성 조회수 487

0

강의 초반에 병렬처리라고 나오든데

허거덩.. 진짜 병렬처리인가요?

여태까지 걍 스레드 하나 더 쓰는건줄 알앗는데

정확하게 알고싶은데

병렬처리처럼 보이는건지 병렬처리인건지 확인좀부탁드립니다

답변 1

답변을 작성해보세요.

1

해당 설명은 쉽게 설명하기 위해 병렬처리로 비유했습니다. TPS 비디오 연재가 끝나면 다시 리뉴얼할 생각입니다.

코루틴은 병렬처리가 아니며 유니티는 async가 제대로 지원 안되던 시절 병렬처리를 흉내내기 위해 코루틴을 적극적으로 사용했습니다.

코루틴은 병렬처리처럼 동작하지만, 실제로는 여러 코루틴이 실행중인 경우 yield문을 통해 서로 바톤을 연속적으로 넘겨가는 방식으로 동작합니다.

따라서 다음과 같이 어떤 코루틴 내부에서 무한루프를 루프 중간에 yield문을 삽입하지 않고 실행하면, 다른 코루틴이나 이외의 처리로 넘어갈 수 없으므로 앱이 크래시됩니다.

// 크래시가 안남

while(true){

 // do something

 yield return null;

}

 

// 크래스가 남

while(true) {

    // do something

}

 yield return null;