blocking & non-blocking

2019. 5. 22. 09:21임베디드/리눅스시스템프로그래밍

blocking 모드는 API 호출 이후 실행 혹은 대기를 하는 operation

non-blocking 모드는 API 호출 이후 대기 없이 실행 혹은 종료를 하는 operation

 

API의 기본 모드는 blocking으로 동작한다 

만일 read API로 읽을 fd가 2개 이상 읽을 때 non-blocking으로는 모두 확실히 읽을 수 있지만

blocking으로 읽을 땐 확신할 수 없다

 

non-blocking 모드 설정 방법 ex) open

1. open() 호출 시 O_NONBLOCK 설정

2. open() 호출 이후 fnctl()을 이용해 O_NONBLOCK 설정/해제

 

** 참고 non-blocking IO vs async IO

non-blocking IO는 성공여부에 관계없이 결과값을 즉시 반환하며, async IO 진입 후 바로 blocking을 빠져나오지만 백그라운드로 전환되어 실행 중이여서 결과값을 나중에 알 수 있다

'임베디드 > 리눅스시스템프로그래밍' 카테고리의 다른 글

리눅스 시간  (0) 2019.05.22
thread safe 함수  (0) 2019.05.22
SIGKILL  (0) 2019.05.18
mutex 동기화의 성공과 실패  (0) 2019.05.16
pthread_mutex_init man page 설치  (0) 2019.05.16