クロスプラットフォームライブラリとAPI
Qt Creator IDEと生産性向上ツール
UI compositionのためのUIデザインツール
受託開発、トレーニング、サポート等
組み込み向けユーセージ分析
Qtは、UIデザインやソフトウェア開発から品質保証、展開に至るまで、製品開発ライフサイクル全体で生産性を向上させます。あなたのニーズに最も適したソリューションを見つけてください。
最新のリソースを入手し、今後のイベントを確認しましょう。
理想的な学習リソースを見つけたり、コミュニティと交流したりして、Qtのスキルを向上させましょう。
初心者であろうとベテランのQtプロであろうと、成功するために必要なサポートと助けがすべて揃っています。
5月 02, 2011 by 鈴木 佑 | Comments
この記事は Qt Blog の "Threaded HTTP inside QNetworkAccessManager" を翻訳したものです。
執筆: Markus Goetz 2011年4月29日
みなさん、こんにちは。Markus です。これは Labs での私の初めての記事になります :-)
少し前に QNetworkAccessManager が HTTP リクエストを別スレッドで動かすための変更を加えました。これについての詳細を求める声があったため、この記事を書きました :-)
この背景には(WebKit1 をベースにした) QtWebKit の動作が関係します。ウェブブラウザは基本的にとても多くの処理を行います。HTML や CSS の解釈、JPEG や PNG の画像データの表示可能な形式へのデコード、ページのレイアウト、ユーザーからの入力への反応、素晴らしい Web 2.0(もう 3.0?)の世界の Javascript の実行などが必要です。
ネットワークの処理がブラウザ内で同じスレッドで動作している場合、上記の処理の実行中にはネットワークの処理は先に進みません。ネットワークをトレースしたところ、"synchronization points" と呼ばれる現象が起こっていました。これは QtWebKit がメインスレッドでビジー状態にありイベントループをブロックしているため、ネットワークのリクエストが送られないという現象です。最悪なケースでは HTTP サーバーが データの送信を停止します。特に、通常のデスクトップ PC よりも処理能力が低くネットワークのレイテンシが高い場合にこの傾向は強くなります(モバイル端末の世界へようこそ!)。
これに対する解決策はいくつかあります。
我々が選択したのは 3 番です。
技術的にはこれは [qt QNetworkAccessManager] 内に別のレイヤを作ることで処理しています。実際の HTTP プロトコルのコードは全く変更しておらず、QNetworkAccessManager がそれを処理する方法を変更しただけです。もちろん、あなたのコードや QtWebKit のコードも変更する必要はありません。これにより、Qt 4.8 では特に何も変更せずともこの恩恵を受けることができます。
今すぐ試したい方は earth チームのリポジトリをご覧ください。バグを見つけた方は 報告 をお願いします :)
この変更では、(Qt の内部に HTTP スレッドで動作する)新しいクラス QHttpThreadDelegate が追加されており、このクラスが HTTP のコードを制御します。このクラスは(こちらも内部クラスでありユーザースレッドで動作する) QNetworkAccessHttpBackend によりシグナル/スロットを通して制御されます。
PS: 世の中には様々な噂が流れているようですが、このところ Qt は着実に前進していますし、これからもし続けます。あなたがこの記事を読んでいる間にも我々は WebKit2 により QtWebKit 全体をさらに非同期化するための作業を行っています! :)
Download the latest release here: www.qt.io/download.
Qt 6.8 release focuses on technology trends like spatial computing & XR, complex data visualization in 2D & 3D, and ARM-based development for desktop.
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.
9 24, 2024
本稿は「Reducing Binary Size of Qt Applications with Qt 6.8 - Part 2: Coffee..
7 31, 2024
このブログはQt Performance and Tools Update Part 1を翻訳したものです。..
Qt Group includes The Qt Company Oy and its global subsidiaries and affiliates.