0

テキストの描画やピクセルの設定など、常に数値を計算し、ウィンドウ キャンバスに描画するプログラムを作成したいと考えています。そのため、プログラムはおそらくイベント ループ (main_loop) に入ることができません。これにより、数値の計算が停止するからです。

  1. イベントループなしでアイテムを描画する方法はありますか?

  2. それとも、1 つのスレッドが計算を行い、1 つのスレッドがウィンドウのイベント ループを処理するように、スレッドを作成する必要がありますか?

4

1 に答える 1

0

長い計算を行う必要があるイベントベースのプログラムの一般的な戦略は、次のいずれかです。

  1. 計算を数十ミリ秒しかかからない小さなチャンクに分割し、イベント ループがアイドル状態のときに次々と実行されるようにスケジュールします。覚えておいてください: イベント ループは単なるループであるため、長時間実行される計算がタイトで高速なコードの巨大なループである場合は、イベント ループをループにします。
  2. 長時間実行される計算を別のスレッドに配置し、そのスレッドがその結果をスレッド セーフな方法でメイン スレッドに送り返すようにします。
  3. 長時間実行される計算を別のプロセスに入れ、そのプロセスが更新をメイン プロセスに送り返すようにします。

最初の方法は、管理できる場合に理想的です。私の個人的な好みは、3 番目の方法です。IMO スレッドは、スレッド化されたプログラミングを完全に理解していない限り、可能な限り避けるべきです (それでも、通常は別のプロセスをお勧めします)。

于 2010-08-20T16:51:53.217 に答える