stdinからQtで非同期に読み込みたいと思います。別のスレッドを使用したり、タイマーをセットアップしてファイルディスクリプタにデータがあるかどうか定期的にチェックしたりする必要はありません。これどうやってするの?Qtでstdinから非同期に読み込む
答えて
Qtのドキュメントを読むと、ポータブルではないため、これはできません。どうしても相手側の制御があると仮定して動作するTCPソケットを使用しないでください。最悪の場合、プロキシアプリケーションを作成できます。
Chrisが指摘するように、stdin
からポーリングし、処理するための表示スレッドまたは処理スレッド用のデータを取り込む別のスレッドを用意することが、Chrisさんから指摘されています。
これで確実にQTimer
を設定し、から読み取る信号のハンドラを設定することができます。実装方法は、あなた次第です。
そして、2番目の方法については、これを行う方法の例についてはQT's timer class documentationをご覧ください。あなたの処理が完了したら、実際にタイマーを再起動することを忘れないでください。
これは、携帯電話やラップトップのバッテリ寿命に与える影響を見るまで、良い考えです。あなたのアプリケーションを遅く感じさせる人工的な遅延を導入することは言うまでもありません。 –
@ericdescourtisこの回答が5年以上経過していれば、今より良い選択肢があります。 – Karlson
あなたの疑問にお答えしますでしょうか? –
ブーストを使用している場合は、Asioライブラリを使用できます。 STDIN_FILENO
に割り当てられたposix::stream_descriptor
は非常にうまく機能します。 this answerも参照してください。
あなたはQTのイベントループ、あなたはどちらかと標準入力/標準出力/標準エラー出力I/Oを統合したい場合はQSocketNotifier
QSocketNotifier * notifier = new QSocketNotifier(FDSTDIN, QSocketNotifier::Read);
connect(notifier, SIGNAL(activated(int)), this, SLOT(readStdin(int)));
を使用してみてください:
- 使用QSocketNotifierとIを行います/
read(2)
とwrite(2)
、または QFile
オブジェクトを取得し、bool QFile::open (int fd, OpenMode mode)
を呼び出してQtスタイルのI/Oを実行してください。
- 1. プロパティ設定ツールから非同期データを読み込む
- 2. stdinやその他のソースから非同期でコンソールに書き込む
- 3. 非同期でテキストを音声に読み込む方法
- 4. iPhoneで非同期に画像を読み込む
- 5. 非同期読み込みjavascript with document.write
- 6. エスプレッソとFirebase - 非同期読み込み
- 7. 非同期読み込みの問題
- 8. webpackの非同期読み込み
- 9. 非同期画像読み込み
- 10. 非同期遅延読み込みタスク
- 11. RecyclerViewと非同期読み込み
- 12. JavaScript - 外部スクリプトをNON非同期で読み込む方法
- 13. フォントフェイスオブザーバーと非同期でGoogleフォントを読み込む方法
- 14. SharePointプロファイルイメージを非同期的に読み込む方法
- 15. Laravel/jqueryと非同期に画像を読み込む
- 16. Python:EOFまでバイトチャンクでstdinから読み込む方法は?
- 17. SwiftのCoreDataからの非同期画像読み込み
- 18. stdinから簡単に行を読み込むには?
- 19. イメージをUICollectionViewに非同期で読み込みますか?
- 20. stdinからbytewiseを読み込むには?
- 21. 非同期タスクのURL txt docから画像を読み込む方法は?
- 22. PHPをjQueryと非同期に読み込むことはできますか?
- 23. ASP.NET - ページ読み込み時にUpdatePanelsを非同期に読み込み
- 24. スクリプトを非同期に読み込みますか?
- 25. STDINから読み込むファイルを渡す
- 26. stdinから文字列を読み込む
- 27. stdin(コンソール)から行列を読み込む方法は?
- 28. ANSI C - stdinから単語を読み込む方法は?
- 29. stdinからストリームを読み込むためのread()
- 30. rsyncをSTDINからSRCを読み込む方法は?
スレッドまたはポーリングを使用すると何が問題になりますか? – Chris
余分なスレッドでリソースを無駄にしたくなく、私がそれを避けることができない場合はロックを処理する必要があります。私はまた、私のアプリがアイドルであるときにCPUサイクルを無駄にしたくありません。 – megazord
実際に必要があるかどうかを見る前に、コードを最適化しようとしているような気がします。私は、スレッドのアプローチはおそらくあまりにも複雑だと思いますが、タイマーを定期的にポーリングするのはかなり安いです。 – Chris