私はboost :: asioを使って非同期に読み込もうとしているネイティブposixソケットを持っています: :async_read。しかし、私がこれを行うとき:boost :: asio :: async_readを使用していませんが、boost :: asio :: readは動作します(io_stream.run_one()を使用しています)
カウント変数は0に設定され、doReadハンドラは決して呼び出されず、ecにはエラーはありません。私は同期リードして非同期読み込みを交換する場合は:
size_t count = asio::read(stream, buffer,
asio::transfer_at_least(1));
これが動作し、私は戻って、カウント変数のデータの予想量を取得します。
"int pipe(int pipefd [2]);"によって作成されたfdを使用している私のテストケースは、
- が、それは私が渡していますネイティブ記述子は何らかの方法でasync_readと互換性がありませんどのようにいくつかあるので:そしてASIO :: async_readでその作業罰金を介してデータを渡すので、私はそれはオプションのカップル可能性が考えています静かに失敗する。私は利用できないようにオンとオフをブロックして作成しようとしました。
- io_serviceとposix :: stream_descriptorは接続されていないため、io_serviceは決して読み込みを実行しようとしません。これは私がio_serviceを参照渡ししていることが原因でしょうか? (そして数スレッド内でも同様です)
'stream_descriptor'は、' pipe'の読み込み側の記述子でうまく動作します。[this](http://stackoverflow.com/questions/5210796/boost-asio-how-to-write-コンソールサーバー/ 5211349#5211349)回答。私はあなたの2番目の弾丸が、あなたが見る行動の原因だと思っています。あなたの質問を編集し、私たちが分析するために[短く、自己完結型の、正しい例](http://sscce.org/)を含めてください。 –
私はここに自宅でコードを持っていないので、仕事で月曜日に一緒に1つを得るでしょう、ありがとう! –