2013-04-29 33 views
8

HTTPClientSessionを使用するための通常のサンプルコードは、このような何かを行くポコHTTPClientSessionから読み取ります操作は非ブロッキングなので、いつでもキャンセルできます。非同期は

+0

あなたは、このための任意の解決策を見つけますか? – UVV

答えて

3

単なるアイデアです。コードをスレッド内に入れてみてください。

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

よろしく

+0

どうすればそれが役に立ちますか?私はこの新しいスレッドが無期限にブロックされるようにします –

+1

session.receiveResponse()をスレッド内に置くと、メインコードを分離されたスレッドで実行できるため、ブロックしているかどうかを心配する必要はありません。ブロッキングセクションをキャンセルするには、スレッドを終了させるか、順序付けられた方法でスレッドを停止します。スレッド間でデータを交換するには、たとえば、mutexと同期した参照/ポインタまたはキューを使用します。 receiveResponse()をしばらくブロックしたい場合は、Time-Alive(setKeepAliveTimeoutメソッド)とタイムアウトを参照する必要があります。幸運 –

+0

[OK]を次にHTTPClientSession :: setKeepAliveTimeout()メソッドを使用して、現在の接続の小さなTimeOutを構成します。ドキュメントから、 "ストリームはsendRequest()が呼び出されるまで、またはセッションが破棄されるまで有効です"ので、rsストリームが一定期間何も受信しなかった場合は問題なく処理を続行する必要があります。 –