2013-04-29 3 views
8

HTTPClientSession를 사용하는 일반적인 샘플 코드는 이런 식 마시고 HTTPClientSession 읽기 작업은 비 차단이므로 언제든지 취소 할 수 있습니까?비동기은

+0

당신은이에 대한 모든 솔루션을 찾으셨습니까? – UVV

답변

3

그냥 아이디어, 스레드 안에 코드를 넣어보십시오.

http://pocoproject.org/slides/130-Threads.pdf

감사

+0

어떻게 도움이 될까요? 난 그냥이 새로운 스레드가 무한한 양의 시간 동안 차단 얻을 것이다 –

+1

당신이 session.receiveResponse() 스레드 안에 넣으면, 당신은 분리 된 스레드에서 주 코드를 실행할 수 있기 때문에 차단 여부에 대해 걱정하지 않아야합니다 . 블로킹 섹션을 취소하려면 스레드를 죽이거나 순서대로 중지 할 수 있습니다. 스레드간에 데이터를 교환하려면 예를 들어 뮤텍스와 동기화 된 참조/포인터 또는 큐를 사용합니다. receiveResponse()를 잠시 차단하려면 Time-Alives (setKeepAliveTimeout 메서드) 및 시간 초과를 확인해야합니다. 행운을 빌어 요. –

+0

HTTPClientSession :: setKeepAliveTimeout() 메서드를 사용하여 현재 연결에 대한 작은 TimeOut을 구성하십시오. 문서에서 "sendRequest()가 호출되거나 세션이 파괴 될 때까지 스트림이 유효합니다."따라서 rs 스트림이 일정 기간 동안 아무것도 수신하지 않으면 문제없이 계속 진행해야합니다. –

관련 문제