동기(Synchronized)란

쉽게 설명해서 프로그램이 작성된 순서대로 실행되는 것으로 A, B, C 순서로 함수가 작성되어 있다면 함수는 반드시 A, B, C순서대로 A의 동작이 끝나면 B함수가 실행되고, B가 끝나면 C함수가 동작하는 것을 동기적 실행이라고 할 수 있다.

동기 함수와 비동기 함수의 차이는 작업 완료를 기다리는 방식에 있습니다.

  1. 동기 함수 (Synchronous Function) 함수 호출 후, 작업이 완료될 때까지 호출자가 기다립니다. 결과를 반환하기 전까지 제어권을 호출자에게 넘기지 않음. 예: 파일 읽기(fread()), 데이터베이스 쿼리 처리. 호출자는 함수 실행이 끝나야 다음 작업을 수행할 수 있음.
  2. 비동기 함수 (Asynchronous Function) 함수 호출 후, 작업이 완료될 때까지 호출자가 기다리지 않습니다. 작업이 백그라운드에서 진행되며, 완료되면 콜백 또는 이벤트로 결과를 처리. 예: 소켓의 select(), aio_read()(비동기 파일 읽기). 호출자는 작업 완료 여부와 관계없이 다른 작업을 이어서 수행 가능. 핵심 차이 동기 함수: 작업이 끝날 때까지 기다림. 비동기 함수: 기다리지 않고 병렬적으로 실행 가능. 비동기는 효율성이 중요할 때 사용되며, 특히 I/O 작업에서 자주 활용됩니다.

▼비동기 IO 함수

https://lacti.github.io/2011/08/07/asynchronous-io/