In computer programming, a callback or callback function is any reference to executable code that is passed as an argument to another piece of code; that code is expected to call back (execute) the callback function as part of its job. This execution may be immediate as in a synchronous callback, or it might happen at a later point in time as in an asynchronous callback. They are also called blocking and non-blocking.
런타임 시점에 데이터 흐름을 어떻게 컨트롤하느냐에 따라 달라지는 두 가지 종류의 콜백이 있다. 블로킹 콜백(보통 동기적 콜백으로 알려지거나 콜백 그자체를 뜻하는)과 또 다른 콜백(비동기 콜백)이 있다. 블로킹 콜백은 함수가 리턴되기 전에 발생된다. 논블로킹 콜백은 I/O 작업 또는 이벤트 핸들링에서 사용되고, 인터럽트나 다른 쓰레드에 의해 호출된다. (멀티 쓰레드 환경에서). 이러한 특성 때문에, 블로킹 콜백은 인터럽트나 다수의 쓰레드 없이 작동할 수 있으며, 동기적 목적으로 사용됨을 의미한다. (또다른 쓰레드에 작업을 위임하는 목적으로도)