2012-08-02 4 views
11

Qtのドキュメントは言う、シングルスレッドモデルを使用してUIをメインスレッドとして更新するのはなぜですか?それが開始されたときに述べたように

は、各プログラムは、一つのスレッドを持っています。この スレッドは、「メインスレッド」( Qtアプリケーションでは「GUIスレッド」とも呼ばれます)と呼ばれています。 Qt GUIはこのスレッドで実行する必要があります。アプリケーションプロセス

とiOSのメイン スレッドで実行

Androidのドキュメントは言う、活動および他のコンポーネントと同様

、サービス、

バックグラウンドスレッドからUIコントロールなどを更新しないことを強くお勧めします(例えば。タイマー、通信など)。これは、ときどき識別するのが難しい場合がある クラッシュの原因になります。代わりに、 を使用してUIスレッド(常に 「メイン」スレッド)上でコードを実行させるようにしてください。

なぜUIを更新するために単一のスレッドモデルを使用しますか?

+0

複雑さが増し、メリットがありません。 http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded –

答えて

20

簡単な答えは、ディスプレイが壊れていないことを確認する唯一の合理的な方法です。

長い答えは、複数のスレッドでUIを更新できるようにすると、デッドロック、競合状態、およびあらゆる種類の問題が発生することです。これは、複数のスレッドがUIに触れることを可能にするJavaのAWT(他のUIシステムの中で)によって教えられた痛い教訓でした。たとえば、this blog postを参照してください。

+0

+1ブログ投稿リンク: – msk

+3

@MSK - この投稿には、イベントとスレッドのJohn Ousterhout残念ながら、それは死んだリンクです。興味のある人には、[here](http://www.csd.uoc.gr/~hy527/papers/threads-ousterhout.pdf)を含むWeb上のいくつかの場所でトークを見つけることができます。 –

+0

さて、ブログの投稿そのものは、死んだリンクです。投稿のタイトルを検索して、[こちら](http://tecnologia.revistacocktel.com/multithreaded-toolkits-a-failed-dream/)のコピーを見つけました:_ "マルチスレッドツールキット:失敗した夢?" _ –