다른 Thread로 작업을 보내고, 그 작업이 끝나는 것을 기다리지 않고 다른 작업을 시작한다.
Synchronous 방식보다 복잡
data를 받기까지 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있기에 자원을 효율적으로 사용할 수 있다.
Synchronous, Asynchronous 방식 모두 다른 Thread로 작업을 보낸다는 공통점이 있다. Thread가 여러 개일 경우, 어느 쓰레드에 보내냐 라는 개념에서 또 2가지의 방법이 있다.
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로 보낸다를 뜻한다.
동기 / 비동기를 여기까지만 알아도 된다면 참 행복할 것 같다만.. 개인적으로 동기 / 비동기는 개념이 아니라 어떻게 사용해야될 줄 알아야 진정으로 알고있는 것이라고 생각한다. 그러므로, Swift
언어를 기준으로 한번 다음에
알아보자. 나중에 작성할게요 ㅎㅎ..