2011-08-10 3 views
2

제목에서 알 수 있듯이 select() 또는 (직렬 통신 등의 경우) 다른 스레드에서 read()와 같은 블로킹 호출을 취소하려면 어떻게해야합니까? 이런 것들을 해결하는 전통적인 방법은 무엇입니까? 하나는 작은 시간 제한을 사용할 수 있고 그것은 아마 잘 작동하지만, 그것은 나에게 약간의 해킹처럼 보일 것입니다.select() 또는 read()와 같은 차단 호출을 취소하려면 어떻게해야합니까?

+0

취소 할 사항이 없습니다. 다시 시도할지 여부는 시간 초과 및 결정 만 있습니다. – wberry

답변

3

select(2)을 방해하는 전통적인 방법은 self-pipe trick입니다. 입/출력 호출은 설명자가 비 블로킹이고 처리가 EAGAIN 인 것이 더 좋습니다.

0

이러한 상황에서는 작거나 즉각적인 제한 시간을 사용해야하며 다음 선택/읽기 시도가 수행되는시기/방법/이유를 처리하는 추가 논리를 사용해야합니다.

관련 문제