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 |