본문 바로가기
java/thread(동시성)

비동기 & 논블러킹 의미 분석

by 권성호 2022. 8. 11.

사실이 아니라 공부한 내용과 생각을 정리한 글입니다. 언제든 가르침을 주신다면 감사하겠습니다.

1. 동기와 비동기

  • 코드적으로 접근해야 하는 개념
  • 특정 코드 블락이 다른 코드 블락의 완료 여부에 의존해서 실행될 때 동기적으로 실행된다고 표현
  • 비동기를 구현하는 가장 흔한 방법으로,
    • 특정 코드 블락이 실행되는 동안 다른 코드 블락을 실행하기 위해 별도의 스레드를 할당하여 두 코드 블락이 독립적으로 수행되도록 함
    • 또는 call-back 을 사용
  • 한계
    • 외부 API 호출이나 DB 접근을 비 동기적으로 수행한다고 해 보자
    • 별도의 스레드를 할당해 해당 작업을 수행하면 원래 작업을 하던 스레드는 블러킹 되지 않는다.
    • 하지만, 별도로 할당한 스레드는 블러킹 되고 있다.

2. 논블러킹

  • 스레드적으로 접근해야 하는 개념
  • 스레드가 아무것도 안 하고 특정 작업을 기다리고만 있는 현상을 블러킹 되었다고 함
  • 이러한 블러킹이 없는 스레드 운용 기술을 논 블러킹 기술이라고 한다.
    • ex> netty 의 event loop

Q1) 동기적인 코드는 필연적으로 블러킹 될까?

  • 지금까지 본 코드는 전부 그랬음..

참고

 

 

댓글