비동기(Async) vs 동기(Sync)
비동기(Async)
다른 쓰레드에서 작업하도록 넘긴 후 그 작업이 끝나길 "안기다리고" 다음일을 진행한다.
보낸 작업이 언제끝나는지 관심없고, 다음일을 처리한다.
동기(Sync)
작업을 다른 쓰레드에서 하도록 시킨 후, 그 작업이 끝나길 "기다렸다가" 다음일을 진행한다.
비동기라는 개념이 일반적으로 필요한 이유는 대부분 서버와 통신(네트워크 작업) 때문 이다.
직렬처리(Serial) vs 동시처리(Concurrncy)
직렬처리(Serial)
쓰레드에서 하던 작업을 다른 쓰레드로 보내는데, 다른 하나의 쓰레드로 원래의 순서를 유지해서 보낸다.
(보통 메인쓰레드에서) 분산처리 시킨 작업을 "다른 한개의 쓰레드"에서 처리
순서가 중요한 작업을 처리할 때 사용
동시처리(Concurrncy)
쓰레드에서 하던 작업들을 한 개의 쓰레드가 아닌 여러개의 쓰레드로 분산되어 처리된다.
몇 개의 쓰레드로 분산할지는 시스템이 알아서 결정, 다만 여러개의 쓰레드로 분산처리
(보통 메인쓰레드에서) 분산처리 시킨 작업을 "다른 여러개의 쓰레드에서" 분산되어 처리
각자 독립적이지만 유사한 여러개의 작업을 처리할 때
직렬처리가 필요한 이유
작업의 순서가 중요할 수 있다.
비동기, 동기
다른 쓰레드로 보낸 작업의 종료를 "기다릴지 말지"에 대한 내용
직렬, 동시
다른 쓰레드로 작업을 보내는데, "몇 개의 쓰레드로 보낼지" 에 대한 내용