4

私は何日もの間、いくつかのタイマーを起動し、メインプログラムの実行をクロックしないメカニズムを考え出すのに苦労してきました. .join().detach()wait_until()などの組み合わせ

私が持っているのはのベクトルでstd::threadあり、私はしたい:

  • 最初のポジションを実行する
  • 完了するのを待ちます
  • 次の位置を実行する
  • 完了するのを待ちます

その間、私のアプリの残りの部分は実行されており、ユーザーは何かをクリックしています。

  • タイマーが作動している間、メインプログラムの実行をブロックします

また

  • メインスレッドから切り離しますが、タイマーは同時に実行されます。前のスレッドが終了した後にタイマーが必要です。

私も投稿しました:C++11 std::threads とスレッドが終了するのを待っていますが、どちらかを理解できるように見える解決策はありません。

私は多分使用する必要がありstd::launch::asyncますか?

編集:なぜこれが私にとって把握するのが難しいのか分かりません。つまり、ビデオゲームは常にこれを行っています。たとえば、タイニー タワーを見てみましょう。フロアにストックすると、それらの操作のそれぞれに、ストックを開始してからそのアイテムがストックされるまでの遅延があり、ポップアップして「フロアがストックされました」と言う HUD がトリガーされます。その間、ゲーム全体が実行されたままになり、他のことを行うことができます。私はこれを理解できないので、密でなければなりません。

4

2 に答える 2

0

イベントループをブロックしないタイマーを使用するために必要なのはイベントループであり、C++ にはまだ標準のタイマーがないため、問題は理解できます。イベント ループを記述するには、他のフレームワーク (Qt、Boost.Asio(?)、移植性のない API (select() など) など) を使用する必要があります。

于 2013-11-04T11:04:46.020 に答える