Block mode로 read 할 때 시피유 사용에 관한 질문입니다.

cococo의 이미지

안녕하십니까. 주말 잘 보내셨는지요. 오늘도 어김없이 질문을... -_-;;

pipe로 흘러 들어오는 데이터를 read() 로 읽어 처리하려 하는데요. 이걸 Thread에서 처리합니다.

근데, 만일 보내는 쪽에서 무언가 사정이 생겨서 뮝기적 거리면, read() 는 데이터 다 들어올 때까지 기다리잖아요?
그렇다면, 기다리는 동안, cpu잡아 먹나요? 아님 block되어 있으면 자동으로 context switching 되서 다른 것(thread던, process던 간에) 이 실행되도록 하나요?

아시는 분... 답변 좀... ^^;;

그럼. 행복하세요. ^^*

익명 사용자의 이미지

기본적으로 후자입니다.

시스템호출들은 (예. read()등 ) 기본적으로 후자 처럼 동작하도록 되어 있습니다.

* 단, non-blocking모드라고 해서 전자처럼 동작하게 만들 수 있습니다.