問題タブ [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++ - 2 スレッドは 1 スレッドよりも遅いですか?
私は遊んでいてstd::thread
、奇妙なものがポップアップしました:
clang++ を使用して最適化なしで上記のコードをコンパイルすると、次のベンチマークが得られました。
次に、コードを次のように変更しました:(現在は1つのスレッドのみを使用しています)
そして、これらは新しいベンチマークでした:
2 つのスレッドを利用するコードは、1 つを利用するコードよりも遅いのはなぜですか?
c++ - std::thread を使用するとマルチスレッドが正しく機能しない (C++ 11)
を使用してマルチスレッドがどのように機能するかを理解するために、小さな C++ プログラムをコーディングしましたstd::thread
。これが私のプログラム実行のステップです:
- クラス 'Toto' に含まれる一意の値 '42' を持つ整数の 5x5 マトリックスの初期化 (メインで初期化)。
- 初期化された 5x5 マトリックスを出力します。
std::vector
5 スレッドの宣言。- すべてのスレッドをそれぞれのタスク (
threadTask
メソッド) にアタッチします。各スレッドはstd::vector<int>
インスタンスを操作します。 - 私はすべてのスレッドに参加します。
- 5x5 行列の新しい状態を出力します。
出力は次のとおりです。
そのはず :
コードサンプルは次のとおりです。
ただし、メソッドthreadTask
で変数を出力するlist[x]
と、出力は正しくなります。threadTask
printData() 呼び出しがメインスレッドにあり、メソッドが独自のスレッド(メインスレッドではない)で実行されるため、関数の表示が正しいため、メインで正しいデータを印刷できないと思います。奇妙なことに、親プロセスで作成されたすべてのスレッドが、この親プロセスのデータを変更できないということですか? コードで何かを忘れていると思います。私は本当に迷っています。誰でも私を助けることができますか?よろしくお願いいたします。
c++ - Intel Xeon Phi で std::thread を使用して並列化することは可能ですか?
インテル Xeon Phi での並列化の典型的な例は で行われることを知っていOpenMP
ます。しかしstd::thread
、Xeon Phi でタスクを自動的に起動するために使用することは可能ですか?
c++11 - VS2012 での std::thread c++0x への参照渡し
ref によって渡される必要があるため、スレッド作成 ( workers.push_back(thread(&ThreadFn, x));
)でコンパイル エラーが発生することを予期していました。x
正しい構文は次のようにする必要があります。
もちろん、コードは正常にコンパイルされ、適切に動作します。を使用してVC11
います。これがフラグされていない理由は何ですか?
c++11 - 親スレッドではなく、作成されたスレッドで std::thread のパラメーターの変換が実行されるのはなぜですか?
私は最近、 std::thread のこの不幸な振る舞いを知りました
(ここでの問題は、バフが期限切れになり、char* から std::string への変換が呼び出されたスレッドで行われることです) 解決策は、次のようなスレッドを作成することです:
しかし、私の質問は、ISO がこの動作を選択する理由は何なのかということです (これは、依然として多くのバグの潜在的な原因であると考えると完全に論理的ですが...)。
c++11 - コンソールの出力順序によってマルチスレッド プログラムが遅くなる
次のコードをコンパイルすると
MinGW 4.8.1 では、私のボックスで実行するのに約 2.5 秒かかります。task
これは、関数をシングルスレッドで実行するのにかかるおおよその時間です。
ただし、途中の行のコメントを外して前の行をコメント アウトすると (つまり、d
と"(Help)"
が書き込まれる順序を入れ替えるとstd::cout
)、全体で 8 ~ 9 秒かかります。
説明は何ですか?
もう一度テストしたところ、MinGW-build にのみ問題x32-4.8.1-win32-dwarf-rev3
があり、MinGW build には問題がないことがわかりましたx64-4.8.1-posix-seh-rev3
。私は64ビットマシンを持っています。64 ビット コンパイラでは、両方のバージョンで 3 秒かかります。ただし、32 ビット コンパイラを使用すると、問題が残ります (これは、リリース バージョンとデバッグ バージョンの混乱によるものではありません)。