동기(Synchronous)와 비동기(Asynchronous)
동기(Synchronous)
동기 방식은 작업을 순서대로 하나씩 처리합니다.
이전 작업이 완료되어야만 다음 작업을 시작할 수 있습니다.
예: 함수 호출에서 반환값을 받아야 다음 작업을 수행하는 경우
비동기(Asynchronous)
비동기 방식은 여러 작업을 동시에 처리할 수 있습니다.
이전 작업의 완료와 상관없이 다음 작업을 시작할 수 있습니다.
예: AJAX 요청, 파일 읽기 등
블락(Block)과 논블락(Non-Block)
블락(Block)
블락 방식은 작업을 수행하는 동안 해당 자원(예: CPU, 메모리, 네트워크 등)을 독점합니다.
작업이 완료될 때까지 다른 작업은 대기 상태에 머물러야 합니다.
예: 동기 I/O에서 파일을 읽거나 쓸 때
논블락(Non-Block)
논블락 방식은 작업을 수행하는 동안 해당 자원을 독점하지 않습니다.
작업이 완료되지 않았더라도 다른 작업을 시작할 수 있습니다.
예: 비동기 I/O에서 파일을 읽거나 쓸 때
조합의 예
동기 블락(Synchronous Block): 작업이 완료될 때까지 기다리고, 자원을 독점합니다.
동기 논블락(Synchronous Non-Block): 작업이 완료될 때까지 기다리지만, 다른 작업도 동시에 수행할 수 있습니다.
비동기 블락(Asynchronous Block): 일반적으로 사용되지 않는 조합입니다.
비동기 논블락(Asynchronous Non-Block): 작업의 완료를 기다리지 않고, 다른 작업도 동시에 수행할 수 있습니다.
이러한 방식들은 프로그래밍에서 다양한 상황에 따라 적절히 사용되며, 각각의 장단점이 있습니다.