13

Qtのドキュメントによると、

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

Androidのドキュメントによると、

アクティビティや他のコンポーネントと同様に、サービスはアプリケーションプロセスのメインスレッドで実行されます

そしてiOS、

バックグラウンドスレッド(タイマー、通信など)からUIコントロールなどを更新しないことを強くお勧めします。これはクラッシュの原因となる可能性があり、特定が非常に難しい場合があります。代わりに、これらを使用して、UIスレッド(常に「メイン」スレッド)でコードを強制的に実行します。

なぜ彼らはUIを更新するためにシングルスレッドモデルを使用するのですか?

4

1 に答える 1

27

簡単に言うと、これがディスプレイが破損していないことを確認する唯一の合理的な方法です。

長い答えは、複数のスレッドがUIを更新できるようにすると、デッドロック、競合状態、およびあらゆる種類の問題が発生するということです。これは、複数のスレッドがUIにアクセスできるようにするJavaのAWT(他のUIシステムの中でも)によって教えられた苦痛な教訓でした。たとえば、マルチスレッドツールキット:失敗した夢を参照してください。。その投稿は(デッドリンクを介して)スレッドが悪いアイデアである理由とスレッドの痛みに言及しています。

于 2012-08-02T07:14:11.450 に答える