키워드 : Synchronous, Asynchronous, Serial, Concurrent
대기열을 어떤 방식으로 처리할지에 따라 동기/비동기가 구분된다.
프로그램의 주 실행 흐름을 멈추어서 기다리는 부분 없이 바로 다음 작업을 실행할 수 있게 하는 방식. 즉, 코드의 실행 결과 처리를 별도의 공간에 맡겨둔 뒤 결과를 기다리지 않고 바로 다음 코드를 실행하는 병렬처리 방식
메인스레드에서 다른 스레드에게 작업을 시작 시키고 작업이 끝날때까지 기다리지 않는다. 그렇기 때문에 메인스레드가 다른 작업을 바로 시작할 수 있다.
Queue의 특성에 따른 분류.
Sync | Async | |
---|---|---|
Serial | 작업을 다른 스레드에서 하도록 분산처리한 후 그 작업이 끝나길 기다렸다가 다음 작업을 큐에 넣습니다. 이 때 다른 스레드에 작업을 분산하는 큐의 특성은 Serial입니다. 즉, 작업을 시키는 스레드(A)에서 분산처리 시킨 작업을 해당 스레드(A)가 아닌 다른 한 개의 스레드(B)에서 처리하도록 합니다(분배합니다.)![]() | 작업을 다른 스레드에서 하도록 분산처리한 후 그 작업이 끝나길 기다리지 않고 다음 작업을 큐에 넣습니다. 이 때 작업을 다른 스레드에 분산하는 큐의 특성은 Serial입니다. 즉, 작업을 시키는 스레드(A)에서 분산처리 시킨 작업을 해당 스레드(A)가 아닌 다른 한 개의 스레드(B)에서 처리하도록 합니다(분배합니다.)![]() |
Concurrent | 작업을 다른 스레드에서 하도록 분산처리한 후 그 작업이 끝나길 기다렸다가 다음 작업을 큐에 넣습니다. 이 때 작업을 다른 스레드에 작업을 분산하는 큐의 특성은 Concurrent 입니다. 즉, 작업을 시키는 스레드(A)에서 분산처리 시킨 작업을 해당 스레드(A)가 아닌 다른 여러 개의 쓰레드(B,C,D…)에서 처리하도록 합니다(분배합니다.)![]() | 작업을 다른 쓰레드에서 하도록 분산처리한 후 그 작업이 끝나길 기다리지 않고 다음 작업을 큐에 넣습니다. 이 때 다른 스레드에 작업을 분산하는 큐의 특성은 Concurrent입니다. 즉, 작업을 시키는 스레드(A)에서 분산처리 시킨 작업을 해당 스레드(A)가 아닌 다른 여러 개의 쓰레드(B,C,D…)에서 처리하도록 합니다.(분배합니다.)![]() |