• 공부한 날짜: 2021.11.17
  • 기록: 2021.11.23

 

  • Coroutine: 단일(싱글)스레드, 스펙을 기반으로 동작하는 비동기 작업
  • 스레드: os에서 관리하고, 일할 수 있는 리소스가 많은 상태, CPU 코어에서 실시간, 시분할 비동기 작업 -> 멀티스레드
  • yield,send: 메인 <-> 서브
  • 코루틴 제어, 상태, 양방향 전송

 

  • 서브루틴: 메인루틴 호출 -> 서브루틴에서 수행(흐름제어)
  • 코루틴: 단일 스레드 환경에서 동시성 작업을 하기위한 프로그래밍 기법 
  • 코루틴 : 루틴 실행 중 중지 -> 동시성 프로그래밍(멈춘 지점 기억)/ 스레드에 비해 오버헤드 감소
  • 스레드: 싱글 스레드 -> 멀티스레드 -> 복잡 -> 공유되는 자원 -> 교착상태 발생 가능성 있음, 컨텍스트 스위칭 비용 발생, 자원 소비 가능성 증가
  • def -> async(비동기), yield -> await 

 

 

  • 코루틴 ex1
  • def이라고 선언돼있다고해서 모두 함수는 아니다. 함수/코루틴/제네레이터 모두 될 수 있음 

 

 

-코루틴의 자료형은 generator 

-yield 지점까지 서브 루틴 수행

 

  • send(): 메인루틴과 서브루틴이 데이터를 교환할 수 있게 해주고 next 기능까지 한다 

-주의해야할 점은 send()는 next()가 앞에 있어야 실행될 수 있다. 

 

이렇게 하면 오류발생&nbsp;

 

  • 코루틴 ex2
    • 코루틴 상태 : 1. GEN_CREATED(처음 대기 상태) 2. GEN_RUNNING(실행상태) 3. GEN_SUSPENDED(Yield 대기상태)                         4. GEN_CLOSED(실행 완료 상태)

 

  • 코루틴 ex3

+ Recent posts