728x90
동기와 비동기의 차이(블로킹, 넌블로킹) / 장단점에 대해 설명해보세요.
동기
- Synchronous
- 순차적, 직렬적으로 작업(task)을 수행
- 어떤 작업이 수행 중이면 다음 작업은 그 작업이 끝날 때까지 대기해야 함!
- 요청에 대한 결과가 동시에 일어남!
장점
설계가 매우 간단하고 직관적
단점
결과가 주어질 때까지 아무것도 못하고 대기해야 함
비동기
- Asynchronous
- 병렬적으로 작업(task)를 수행
- 요청을 한 후 응답을 기다리지 않고 바로 다음 작업을 수행
- 요청에 대한 결과가 나중에 일어난다 !
장점
요청에 따른 결과가 반환되는 시간동안 다른 작업 수행 가능
단점
동기식보다 설계가 복잡함
멀티스레드 프로그래밍에 대해 설명해보세요.
- 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것
- CPU의 코어(Core)가 한 번에 하나의 작업만 수행할 수 있으므로, 실제로 동시에 처리되는 작업의 개수와 일치한다.
- 코어가 아주 짧은 시간 동안 여러 작업을 번갈아 가며 수행함으로써 여러 작업들이 모두 동시에 수행되는 것처럼 보이게한다.
- 프로세스의 성능은 쓰레드의 개수와 비례하지 않는다.
여러 쓰레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(Synchronization), 교착상태(deadlock) 와 같은 문제들을 고려해서 신충히 프로그래밍 해야한다.
728x90