問題タブ [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.
c++ - C++11 std::threads とスレッドの終了待ち
タイマー オブジェクトのベクトルがあります。各 Timer オブジェクトは、成長期間をシミュレートする std::thread を起動します。コマンドパターンを使用しています。
何が起こっているかというと、各タイマーが次々に実行されますが、私が本当に欲しいのは、1つが実行されることです....そして、一度終了すると、次のタイマーが....次のタイマーが終了すると...メインに干渉しませんプログラムの実行
上記を次のように実行します。
Timers::execute では、最初のものを実行し、何らかの方法で完了したことを知らせるまで次のものを実行しないように、いくつかの異なる方法を試しています。
アップデート:
私は今、すべてを実行するためにこれをやっています:
初めて完了します (「完了」のカウントが表示されます)が、EXEC_BAD_ACCESSで_t->execute();
内部でクラッシュします。for loop
ベクトルのサイズを確認するために cout を追加しましたが、2 であるため、両方のタイマーが内部にあります。コンソールにこれが表示されます:
すべてがクラッシュせずに完了するように変更するdetach()
と、それらのタイマーが終了するまでアプリの実行がブロックされます。join()
c++ - 複数の std::threads とメイン プログラムの実行に関する問題
私は何日もの間、いくつかのタイマーを起動し、メインプログラムの実行をクロックしないメカニズムを考え出すのに苦労してきました. .join()
と.detach()
、wait_until()
などの組み合わせ
私が持っているのはのベクトルでstd::thread
あり、私はしたい:
- 最初のポジションを実行する
- 完了するのを待ちます
- 次の位置を実行する
- 完了するのを待ちます
その間、私のアプリの残りの部分は実行されており、ユーザーは何かをクリックしています。
- タイマーが作動している間、メインプログラムの実行をブロックします
また
- メインスレッドから切り離しますが、タイマーは同時に実行されます。前のスレッドが終了した後にタイマーが必要です。
私も投稿しました:C++11 std::threads とスレッドが終了するのを待っていますが、どちらかを理解できるように見える解決策はありません。
私は多分使用する必要がありstd::launch::async
ますか?
編集:なぜこれが私にとって把握するのが難しいのか分かりません。つまり、ビデオゲームは常にこれを行っています。たとえば、タイニー タワーを見てみましょう。フロアにストックすると、それらの操作のそれぞれに、ストックを開始してからそのアイテムがストックされるまでの遅延があり、ポップアップして「フロアがストックされました」と言う HUD がトリガーされます。その間、ゲーム全体が実行されたままになり、他のことを行うことができます。私はこれを理解できないので、密でなければなりません。
c++ - std::thread オブジェクトをクラス メンバーとして格納する
std::thread
オブジェクトをクラス内に保持しようとしています。
与えられたエラー:
このエラー メッセージは役に立ちませんstd::thread
。クラスのプライベート メンバーにアクセスしようとしているわけではありません。
私のコードで何が間違っていますか? どうすれば修正できますか?
c++ - 複数のスレッドで std::cout を使用する
c++11 でスレッドをテストするための簡単なプログラムを作成しましたが、std::cout
期待どおりに動作しません。
結果の一部:
スレッドをロックするためにミューテックスを使用したため、2 つのスレッドがstd::cout
同時に実行されている理由がわかりません。何が起こっているのか誰か説明できますか!?
c++ - デタッチされたスレッドで新しいスレッドを作成するC++ 11
デタッチされたスレッドがスレッドを作成し、次のスレッドを実行する前に a を待機している間に、メインスレッドから astd::thread
を作成する可能性について考えています。detach()
join()
しかし、最初のスレッドの後、次のスレッドの前に常にクラッシュするため、これは可能ではありません。
コードのどこか:
内側B::start
:
内側C::start
:
内側D::start
:
内側E::start
:
だからここに私が期待していることがあります:
スレッドt1
が作成され、メイン スレッドから切り離されるため、メイン アプリは で実行
され続けt1
、t2
作成されて 60 秒間スリープします。
60 秒後にt3
作成され、60 秒間スリープします。
60 秒後にt4
作成され、60 秒間スリープします。
私のメインスレッドが実行し続けている間ずっと、そのことをしています。
更新:これをどのように取得して分割し、ヘッダーでstd::thread t1(&B::start, this); //Launch a thread
宣言しますが、必要な場所で実行してから実行しますか?std::thread t1;
(&B::start, this);
detach();
c++11 - ねじ切り検出
C++ 11 でスレッドの終了を検出したいのですが、その方法がわかりません。「get」ブロック プログラムのように見えます。これが私が行ったことです。
私のプログラムは「実行」メソッドの「else」に入らず、状態がロードされていない間、プログラムは「this->thread->get()」でスタックします。
どうすればそれを処理できますか?
ありがとう!