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 -> |
'Development > Software Engineering' 카테고리의 다른 글
소프트웨어 품질을 평가하기 위한 필요요소 (0) | 2019.07.01 |
---|---|
모듈(Module) (0) | 2019.06.22 |
Architecture(아키텍처), 아키텍처 어원 (0) | 2019.06.10 |
Summary - 사용자의 요구분석을 위해 주로 하는 기법, 정보시스템 구축시 운영체제 및 데이터베이스관리시스템에 관련 요구사항을 식별할 때 고려해야 할 사항, WEB/WAS 서버의 CPU용량 산정을 위.. (0) | 2019.06.05 |
4단계:기술적 위험 분석 (0) | 2019.06.04 |