동기(synchronous) vs 비동기(asynchronous)

CODEDRAGON Development/Software Engineering

반응형


 동기 vs 비동기 

동기

비동기

synchronous

blocking

asynchronous

Non-blocking

동시에 일어나는, 같은 시기(同期) 의미합니다.

동시에 일어나지 않는, 같은 시기가 아닌(非同期)것을 의미합니다.

데이터를 기준 동기클럭에 맞추어서 보내는 방식입니다.

·       데이터를 기준 동기클럭에 상관없이 서로간 정한 속도로 보내는 방식입니다.

·       상대방의 일정 신호에 의해서 다음 동작이 이루어지는 동작방식을 가집니다. 상대방이 받을 준비 됬다는 신호를 받아서 byte 보내고 수신측에는 byte 받은 보내도 된다는 신호를 보내고 신호를 확인한 계속 보내는 방식입니다.

·       어떤 루틴을 완전히 끝내고 제어를 반납하는 방식입니다.

상대방의 상태와 관계없이 일방적으로 동작합니다.

·       일단 한번 전송 시작되면 신호를 받았는 확인없이 모든 byte 보냅니다.

·       요청한 동작이 완료되지 않아도 일단 제어권을 반납한 자기 할일을 계속 하는 방식입니다.

 

·       동기식에서는 어떤일을 처리하는 동안 다른 프로그램은 정지상태가 되므로 실제 CPU 느려지는 것은 아니지만 시스템 전체적으로는 효율이 떨어지게 됩니다.

·       동기 방식에 비해 좀더 복잡하지만 결과가 주어지는 시간이 길어져도 시간 동안 다른 작업을 있으므로 좀더 효율적으로 자원을 사용할 있다는 장점이 있습니다

설계가 간단하고 직관적이지만, 결과가 반환될 때까지 아무것도 못하고 대기해야 하는 단점이 있습니다.

·       비동기방식은 요청만 보내고 다른 작업을 하다가 읽은 데이터가 준비됐다는 신호를 받으면 다시 처리하는 방식입니다.

·       .동기방식은 데이터 읽기 요청과 동시에 호출한 자리에서 처리가 완료될 때까지 대기하지만 다른 함수를 호출할 없습니다.

·       함수 호출을 하고 바로 다음것을 수행하다가 처리 완료 이벤트가 오면 다시 처리를 해주는 방식입니다.

·       비동기 메소드는 메소드를 호출만 결과를 기다리지 않습니다. (내부적으로 다른 쓰레드에게 작업을 수행하도록 지시만 하고 결과를 기다리지 않고 돌아옵니다.)


 


 

작업순서:

Work A -> Work A-1 -> Work B -> Work B-1 -> Work C

작업순서:

Work A -> Work B -> Work C

Work A-1 ->

Work B-1 ->