블로킹 논블로킹 - 함수의 동작 방식
블로킹 : 블로킹 함수는 결과를 즉시반환하지 않아 호출한 스레드가 결과를 받기위해 멈춤
논블로킹 : 논블로킹 함수는 결과가 없음에도 -1을 즉시반환하여 호출한 스레드가 결과를 받는사이에 다른일을 할 수있음 결과를 받는 법은 주기적으로 확인하거나 I/O 멀티플렉싱 콜백등이 있음
동기 비동기 - 작업 흐름
동기 : 명령을 순차적으로 실행하는 것, 즉 요청자가 결과를 직접받는 것
비동기 : 명령을 병렬적으로 실행하는 것, 즉 요청의 완료를 콜백으로 받는 것, 블로킹 I/O를 별도의 스레드에서 실행하는 것
동기 + 블로킹 = 일반적인 디비 호출등
동기 + 논블로킹 = 논블로킹 함수가 -1을 반환했음에도 지속적으로 확인하여 명령이 순차적으로 실행되는 상황
비동기 + 블로킹 = 일반적으로 없음
비동기 + 논블로킹 = 자바의 컴퓨터블퓨처
비동기 + 블로킹에 관하여
Thread join예시가 비동기 + 블로킹이 될 수도 있다.
호출자 스레드에게 명령을 병렬적으로 즉 비동기로 할당히지만 지시자스레드는 그 결과를 받기위해 블로킹 됨
여기까지만 보면 비동기 블로킹이다.
하지만 지시자스레드의 관점에서 즉 지시자스레드의 작업흐름으로보면 결과를 본인이 받아서 가져가고 호출자들에게 시킨뒤 가져간다는 하나의 순차적 작업흐름이라 동기 블로킹으로 볼 수도 있다.
운영체제/동시성