問題タブ [stdthread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4566 参照

c++ - C++11 std::threads とスレッドの終了待ち

タイマー オブジェクトのベクトルがあります。各 Timer オブジェクトは、成長期間をシミュレートする std::thread を起動します。コマンドパターンを使用しています。

何が起こっているかというと、各タイマーが次々に実行されますが、私が本当に欲しいのは、1つが実行されることです....そして、一度終了すると、次のタイマーが....次のタイマーが終了すると...メインに干渉しませんプログラムの実行

上記を次のように実行します。

Timers::execute では、最初のものを実行し、何らかの方法で完了したことを知らせるまで次のものを実行しないように、いくつかの異なる方法を試しています。

アップデート:

私は今、すべてを実行するためにこれをやっています:

初めて完了します (「完了」のカウントが表示されます)が、EXEC_BAD_ACCESSで_t->execute();内部でクラッシュします。for loopベクトルのサイズを確認するために cout を追加しましたが、2 であるため、両方のタイマーが内部にあります。コンソールにこれが表示されます:

すべてがクラッシュせずに完了するように変更するdetach()と、それらのタイマーが終了するまでアプリの実行がブロックされます。join()

0 投票する
2 に答える
747 参照

c++ - 複数の std::threads とメイン プログラムの実行に関する問題

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

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

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

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

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

また

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

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

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

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

0 投票する
1 に答える
2477 参照

c++ - std::thread オブジェクトをクラス メンバーとして格納する

std::threadオブジェクトをクラス内に保持しようとしています。

与えられたエラー:

このエラー メッセージは役に立ちませんstd::thread。クラスのプライベート メンバーにアクセスしようとしているわけではありません。

私のコードで何が間違っていますか? どうすれば修正できますか?

0 投票する
4 に答える
29041 参照

c++ - 複数のスレッドで std::cout を使用する

c++11 でスレッドをテストするための簡単なプログラムを作成しましたが、std::cout期待どおりに動作しません。

結果の一部:

スレッドをロックするためにミューテックスを使用したため、2 つのスレッドがstd::cout同時に実行されている理由がわかりません。何が起こっているのか誰か説明できますか!?

0 投票する
1 に答える
656 参照

c++ - デタッチされたスレッドで新しいスレッドを作成するC++ 11

デタッチされたスレッドがスレッドを作成し、次のスレッドを実行する前に a を待機している間に、メインスレッドから astd::threadを作成する可能性について考えています。detach()join()

しかし、最初のスレッドの後、次のスレッドの前に常にクラッシュするため、これは可能ではありません。

コードのどこか:

内側B::start

内側C::start

内側D::start

内側E::start

だからここに私が期待していることがあります:

スレッドt1が作成され、メイン スレッドから切り離されるため、メイン アプリは で実行

され続けt1t2作成されて 60 秒間スリープします。

60 秒後にt3作成され、60 秒間スリープします。

60 秒後にt4作成され、60 秒間スリープします。

私のメインスレッドが実行し続けている間ずっと、そのことをしています。

更新:これをどのように取得して分割し、ヘッダーでstd::thread t1(&B::start, this); //Launch a thread宣言しますが、必要な場所で実行してから実行しますか?std::thread t1;(&B::start, this);detach();

0 投票する
2 に答える
334 参照

c++11 - ねじ切り検出

C++ 11 でスレッドの終了を検出したいのですが、その方法がわかりません。「get」ブロック プログラムのように見えます。これが私が行ったことです。

私のプログラムは「実行」メソッドの「else」に入らず、状態がロードされていない間、プログラムは「this->thread->get()」でスタックします。

どうすればそれを処理できますか?

ありがとう!