SlideShare a Scribd company logo
1 of 62
Download to read offline
코루틴
(Coroutine)
쿠재아이
김재경
주제 선정 이유
원래 발표 하려고 했던 주제
재미있습니다. 한 번 보시길…
http://ndcreplay.nexon.com/NDC2018/sessions/NDC2018_0089.html#k%5B%5D=cap
왜 포기했나?
• 방대한 분량
• 이미 발표한 내용을 똑같이 발표 스터디 목적에 적절하지 못하다 생각
• 3번정도 반복해서 들어도 이해 못하는 내용이 있음 (이건 코루틴도…)
• 흥미도 코루틴 > CAP 이론
그럼 코루틴을 선정한 계기는?
201X년 X월 X일 발표에서 질문이 하나 나옴
그럼 코루틴을 선정한 계기는?
Q. 실행 도중 멈추고 멈춘 시점부터 다시 시작하는 함수가 있는데 뭘까요?
A. 코루틴이요
그럼 코루틴을 선정한 계기는?
실행 도중 멈추고 멈춘 시점부터 다시 시작하는 함수
???
그럼 코루틴을 선정한 계기는?
질문을 들은 내 표정
그럼 코루틴을 선정한 계기는?
과거에 이해 못한 질문과 더불어
저번 발표(Go 언어)에서 나온 Goroutine이 기폭제가 되어 발표 주제로 선정
코루틴의 정의
코루틴이란 무엇인가?
• Coroutines are computer-program components that generalize subroutines for non-preemptive
multitasking, by allowing multiple entry points for suspending and resuming execution at certain
locations.
Wikipedia
• 코루틴은 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 여러 진입점을 허용하여 비선점 멀티 태스킹을
위해 서브루틴을 일반화하는 컴퓨터 프로그램 구성 요소입니다.
위키피디아
코루틴이란 무엇인가?
메인 루틴
코루틴
이거 완전 스레드인데?
메인 스레드
다른 스레드
뭐가 다른거야?
이거 완전 스레드인데?
코루틴을 잘 모른체 스레드와 비교하면 큰 착각에 빠진다
코루틴이란 무엇인가?
코루틴은
함수다 스레드다
코루틴이란 무엇인가?
코루틴은
함수다 스레드다
코루틴이란 무엇인가?
• Coroutines are computer-program components that generalize subroutines for non-preemptive
multitasking, by allowing multiple entry points for suspending and resuming execution at certain
locations.
Wikipedia
• 코루틴은 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 여러 진입점을 허용하여 비선점 멀티 태스킹을
위해 서브루틴을 일반화하는 컴퓨터 프로그램 구성 요소입니다.
위키피디아
코루틴이란 무엇인가?
코루틴
서브루틴
(함수)
• 서브루틴은 진입점과 중단점이 1개인 코루틴이라고 정의할 수 있다
코루틴과 스레드의 차이점
코루틴과 스레드의 차이점은?
함수와 스레드의 차이점과 같다
스레드는 선점형(Preemptive)이다
P1 P2 P3 P4 P1 P3
• 다른 스레드가 실행 도중 끼어들 수 있다
코루틴은 비선점형(Non-Preemptive)이다
P2 P4
• 실행 중인 코루틴이 반드시 중단 or 종료되어야 다른 코루틴을
실행할 수 있다
P1 P3
스레드는 OS가 스케줄링한다
메인 스레드
다른 스레드OS가 스위칭
OS가 스위칭
OS가 스위칭
OS가 스위칭
코루틴은 유저가 스케줄링한다
유저가 스위칭(호출)
유저가 스위칭(호출)
유저가 스위칭(호출)
유저가 스위칭(호출)
메인 루틴
코루틴
(멀티)스레드는 스레드가 최소 2개다
메인 스레드
다른 스레드
코루틴은 스레드가 1개다
• 코루틴은 함수라는 것을 명심하자 메인 루틴
코루틴
코루틴은 스레드가 1개다
메인 루틴
코루틴
• 코루틴은 함수라는 것을 명심하자
• 함수를 사용한다고 스레드가 새로
생성되는가?
메인 스레드
이런 차이점이 있군…
이 차이점을 안다면 몇 가지를 더 유추할 수 있다
스레드를 왜 사용하는가?
• 여러 이유가 있겠지만 대표적으로 I/O Blocking 때문에
스레드를 왜 사용하는가?
• 여러 이유가 있겠지만 대표적으로 I/O Blocking 때문에
• 그럼 문제점은?
스레드를 왜 사용하는가?
• 여러 이유가 있겠지만 대표적으로 I/O Blocking 때문에
• 그럼 문제점은?
• 데드락, 기아현상, 공유변수 기타 등등
스레드 대신 코루틴을 사용하면?
• 코루틴에서 I/O 작업을 하면 어떻게 될까?
I/O
메인 루틴
코루틴
메인 스레드
스레드 대신 코루틴을 사용하면?
• 코루틴에서 I/O 작업을 하면 어떻게 될까?
• 멀티 스레드 효과를 얻을 수 없다
• 어떻게 해야되나? Block!!
메인 루틴
코루틴
메인 스레드
스레드 대신 코루틴을 사용하면?
• 코루틴에서 I/O 작업을 하면 어떻게 될까?
• 멀티 스레드 효과를 얻을 수 없다
• 어떻게 해야되나?
• 비동기 I/O를 사용해야 한다
Block!!
메인 루틴
코루틴
메인 스레드
스레드 대신 코루틴을 사용하면?
• 스레드는 공유변수 문제로 동기화를 해야 한다
• 코루틴은?
스레드 대신 코루틴을 사용하면?
• 코루틴은 동기화가 필요 없다
코루틴
메인 스레드
메인 루틴
스레드 대신 코루틴을 사용하면?
• 코루틴은 동기화가 필요 없다
• 여러 함수에서 전역변수에 접근한다고
동기화를 하는가?
코루틴
메인 스레드
메인 루틴
(유니티에서)코루틴을 왜 사용하는가?
• 코루틴이 구현된 언어나 라이브러리가 많지만 게임 분야에서는
유니티에서만 사용되는 것 같다 (구글 검색하니 유니티 글밖에 없음)
(유니티에서)코루틴을 왜 사용하는가?
• 코루틴이 구현된 언어나 라이브러리가 많지만 게임 분야에서는
유니티에서만 사용되는 것 같다 (구글 검색하니 유니티 글밖에 없음)
• 안써봐서 모름
(유니티에서)코루틴을 왜 사용하는가?
• 코루틴이 구현된 언어나 라이브러리가 많지만 게임 분야에서는
유니티에서만 사용되는 것 같다 (구글 검색하니 유니티 글밖에 없음)
• 안써봐서 모름
• 몇 가지 차이점이 있지만 코루틴의 호출 방식과 로직 분리는 멀티 스레드를
흉내낼 수 있다
(유니티에서)코루틴을 왜 사용하는가?
• 코루틴이 구현된 언어나 라이브러리가 많지만 게임 분야에서는
유니티에서만 사용되는 것 같다 (구글 검색하니 유니티 글밖에 없음)
• 안써봐서 모름
• 몇 가지 차이점이 있지만 코루틴의 호출 방식과 로직 분리는 멀티 스레드를
흉내낼 수 있다
• 어려운 멀티 스레드를 사용하느니 코루틴을 쓰라는게 아닐까? (뇌피셜)
코루틴의 구현
어떻게 구현하는가?
• 프로그래밍에서 중간에 그만두고 다시 시작하는 것은 어딘가에 정보를 저장했다가
불러오는 것을 의미한다
• 스레드를 생각하면 쉽다 (Context Switch)
어떤 정보를 저장하는가?
• 함수가 실행되는데 필요한 정보
• 지역변수, 레지스터 값 등
어디에 저장하는가?
• 메모리 어디?
어디에 저장하는가?
• 메모리 어디?
• Heap
흠… 생각을 해보니
• 레지스터까지 접근한다는 건 어셈블리 레벨까지 내려간다는 건데…
그렇게까지 할까?
흠… 생각을 해보니
• 레지스터까지 접근한다는 건 어셈블리 레벨까지 내려간다는 건데…
그렇게까지 할까?
• 찾아보니 진짜 그렇게 함;;
C++ 표준에서는 구현되어 있을까?
• 아직 미구현
• C++20에서 추가 예정
C++20에서 추가된다고?
그럼 이 라이브러리에는 구현되어 있지 않을까?
Boost에는 구현되어 있다
• 최신 버전(1.68.0) 기준
• Coroutine과 Coroutine2가 있다
• Coroutine은 deprecated 상태
Boost Coroutine을 이용한 피보나치 수열
Boost Coroutine을 이용한 피보나치 수열
coroutine -> pull_coroutine
pull_coroutine -> control_block
control_block -> fiber
Fiber -> fcontext_t
유니티의 코루틴은?
IEnumerator를 이용한 변종에 가깝다
자세한건 구글 검색
참고 자료
• Wikipedia - Coroutine
https://en.wikipedia.org/wiki/Coroutine
• Kotlin의 코루틴은 어떻게 동작하는가
https://www.slideshare.net/cwdoh/hey-kotlin-how-coroutine-works
• Blocking-NonBlocking-Synchronous-Asynchronous
https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/
• 코루틴(Coroutine) 이해하기
https://kwangyulseo.com/2015/05/15/%EC%BD%94%EB%A3%A8%ED%8B%B4coroutine-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
참고 자료
• 코루틴 소개
https://medium.com/@jooyunghan/%EC%BD%94%EB%A3%A8%ED%8B%B4-%EC%86%8C%EA%B0%9C-504cecc89407
• 코루틴을 구분해보자
https://medium.com/@jooyunghan/%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%84-%EA%B5%AC%EB%B6%84%ED%95%B4%EB%B3%B4%EC%9E%90-98428c491ace
• 코루틴과 파이버
https://medium.com/@jooyunghan/%EC%BD%94%EB%A3%A8%ED%8B%B4%EA%B3%BC-%ED%8C%8C%EC%9D%B4%EB%B2%84-9e93c12bce30
• Knock!Knock! 코루틴
https://medium.com/@jooyunghan/knock-knock-%EC%BD%94%EB%A3%A8%ED%8B%B4-c4ccc17a5d66
참고 자료
• Stackful/Stackless 코루틴
https://medium.com/@jooyunghan/stackful-stackless-%EC%BD%94%EB%A3%A8%ED%8B%B4-4da83b8dd03e
• Knock!Knock! 코루틴 #2
https://medium.com/@jooyunghan/knock-knock-%EC%BD%94%EB%A3%A8%ED%8B%B4-2-e5d26678e021
• Fibers (Microsoft Docs)
https://docs.microsoft.com/en-us/windows/desktop/procthread/fibers
• Using Fibers
https://docs.microsoft.com/en-us/windows/desktop/procthread/using-fibers

More Related Content

What's hot

Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규ChangKyu Song
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?내훈 정
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁Yi-kwon Hwang
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션NHN FORWARD
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화Seungmo Koo
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들영욱 오
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 

What's hot (20)

Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
시즌 2: 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
NDC15 - 사례로 살펴보는 MSVC 빌드 최적화 팁
 
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
[2019] 언리얼 엔진을 통해 살펴보는 리플렉션과 가비지 컬렉션
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기그럴듯한 랜덤 생성 컨텐츠 만들기
그럴듯한 랜덤 생성 컨텐츠 만들기
 
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
NDC2017 언리얼엔진4 디버깅 101 - 게임 기획자, 프로그래머가 버그와 만났을 때 사용할 수 있는 지침들
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 

Similar to 코루틴(Coroutine)

유니티 - 프리팹과 코루틴
유니티 - 프리팹과 코루틴유니티 - 프리팹과 코루틴
유니티 - 프리팹과 코루틴주형 고
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)해강
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료Junyoung Jung
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향Eunhyang Kim
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 CHeesuk Kang
 
Refactoring web audio_player
Refactoring web audio_playerRefactoring web audio_player
Refactoring web audio_player창석 한
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr내훈 정
 

Similar to 코루틴(Coroutine) (7)

유니티 - 프리팹과 코루틴
유니티 - 프리팹과 코루틴유니티 - 프리팹과 코루틴
유니티 - 프리팹과 코루틴
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)
 
16 학술제 마무리 자료
16 학술제 마무리 자료16 학술제 마무리 자료
16 학술제 마무리 자료
 
스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향스타트업 인턴 개발자 3달간의 고군분투기 김은향
스타트업 인턴 개발자 3달간의 고군분투기 김은향
 
학교에서 배우지 않는 C
학교에서 배우지 않는 C학교에서 배우지 않는 C
학교에서 배우지 않는 C
 
Refactoring web audio_player
Refactoring web audio_playerRefactoring web audio_player
Refactoring web audio_player
 
Multithread & shared_ptr
Multithread & shared_ptrMultithread & shared_ptr
Multithread & shared_ptr
 

More from QooJuice

리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션QooJuice
 
캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션QooJuice
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusionQooJuice
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage CollectionQooJuice
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
Game programming patterns 2
Game programming patterns 2Game programming patterns 2
Game programming patterns 2QooJuice
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patternsQooJuice
 
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화QooJuice
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)QooJuice
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍QooJuice
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향QooJuice
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and PagingQooJuice
 
Move semantics
Move semanticsMove semantics
Move semanticsQooJuice
 

More from QooJuice (17)

리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
캐릭터 애니메이션
캐릭터 애니메이션캐릭터 애니메이션
캐릭터 애니메이션
 
Screen space ambient occlusion
Screen space ambient occlusionScreen space ambient occlusion
Screen space ambient occlusion
 
UE4 Garbage Collection
UE4 Garbage CollectionUE4 Garbage Collection
UE4 Garbage Collection
 
Compute shader
Compute shaderCompute shader
Compute shader
 
Game programming patterns 2
Game programming patterns 2Game programming patterns 2
Game programming patterns 2
 
Game programming patterns
Game programming patternsGame programming patterns
Game programming patterns
 
Picking
PickingPicking
Picking
 
Direct x 12 초기화
Direct x 12 초기화Direct x 12 초기화
Direct x 12 초기화
 
행렬
행렬행렬
행렬
 
벡터
벡터벡터
벡터
 
노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)노말 맵핑(Normal mapping)
노말 맵핑(Normal mapping)
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
부팅
부팅부팅
부팅
 
절차지향 vs 객체지향
절차지향 vs 객체지향절차지향 vs 객체지향
절차지향 vs 객체지향
 
Segmentation and Paging
Segmentation and PagingSegmentation and Paging
Segmentation and Paging
 
Move semantics
Move semanticsMove semantics
Move semantics
 

코루틴(Coroutine)