[OS] 동기와 비동기

BaeRonui·2022년 2월 16일
0

OS

목록 보기
7/14

서론

Synchronous

  • 다른 Thread로 작업을 보내고, 그 작업이 끝날 때까지 기다린다.
  • 구현이 쉬움
  • data 요청이 끝날 때 까지 기다림

Asynchronous

  • 다른 Thread로 작업을 보내고, 그 작업이 끝나는 것을 기다리지 않고 다른 작업을 시작한다.

  • Synchronous 방식보다 복잡

  • data를 받기까지 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있기에 자원을 효율적으로 사용할 수 있다.

Synchronous, Asynchronous 방식 모두 다른 Thread로 작업을 보낸다는 공통점이 있다. Thread가 여러 개일 경우, 어느 쓰레드에 보내냐 라는 개념에서 또 2가지의 방법이 있다.

Serial

  • 작업을 다른 한개의 스레드에서 담당하고 실행시키는 방법

Concurrent

  • 작업을 다른 여러개의 스레드에서 담당하고 실행시키는 방법

Q. Concurrent가 여러개의 Thread에 보내서 실행시키는 방법이면 자원을 더 효율적으로 사용한다는 말이 될텐데, Serial 방식은 왜 있냐?
A. 그 작업들 사이사이에 선후관계가 있을 경우, Serial 방식을 사용해야 한다.

Q. Callback 함수는 어디서 실행이 되냐? main Thread이냐 아니면 분산처리 보낸 Thread냐?
A. 일반적으로는 분산처리 보낸 Thread에서 실행한다. Callback 함수가 main Thread에서 실행해야 되는 경우라면, Callback 함수 내에 main Thread로 돌아오는 함수를 작성하게 된다.

Q. 그러면, Asynchronous와 Concurrent는 같은 말이냐?
A. 개념부터가 다르다. Asyncronous는 다른 thread로 보낸 작업을 기다리지 않는다를 뜻하고, Concurrent는 다른 thread로 작업을 보낼 때 여러개의 Thread로 보낸다를 뜻한다.

need more?

동기 / 비동기를 여기까지만 알아도 된다면 참 행복할 것 같다만.. 개인적으로 동기 / 비동기는 개념이 아니라 어떻게 사용해야될 줄 알아야 진정으로 알고있는 것이라고 생각한다. 그러므로, Swift 언어를 기준으로 한번 다음에 알아보자. 나중에 작성할게요 ㅎㅎ..

profile
iOS / Swift 였던것 이젠 BE

0개의 댓글