ページ 1 / 1
C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月23日(木) 10:00
by こころな
C++20規格のThread libraryを利用して、一括に多量threadを生成し、自動同期をしたいですけれども、アイディアをくださいますようお願い申し上げます。
非自動的、一般的なやりかたとして以下のようで、1000個のthreadの生成と同期をしようとしたら、少なくとも2000行のコードを書かなければなりませんね❣
これを避けたいのです。
C++
// スレッド起動(関数ポインタhogeをCallableとして起動)
thread thr1(hoge, 10, 1);
thread thr2(hoge, 20, 2);
thread thr3(hoge, 30, 3);
// 1000個まで続く....
//# thNの完了を待つ
thr1.join();
thr2.join();
thr3.join();
// 1000個まで続く....
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月23日(木) 20:34
by みけCAT
threadをvectorに入れるといいでしょう。
コード:
#include <iostream>
#include <thread>
#include <vector>
void hoge(int a, int b) {
std::cout << a << ' ' << b << std::endl;
}
int main(void) {
std::vector<std::thread> thr;
const int N = 1000;
for (int i = 1; i <= N; i++) {
thr.emplace_back(hoge, 10 * i, i);
}
for (auto& t : thr) {
t.join();
}
return 0;
}
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月24日(金) 00:13
by こころな
お返答ありがとうございます
Q1.
《 thr.emplace_back(hoge, 10 * i, i); 》はhogeをthread typeのvectorにhoge関数とその引数を入れるだけで、threadの実行になるのでしょうか。
Q2.
《 for (auto& t : thr) 》では tがiteratorに相当するもんでしょうか。
またよろしくお願いします
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月24日(金) 13:29
by usao
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月25日(土) 17:14
by こころな
難しい問題に多くの人に早く聞きたいですね。何が悪いの?
大体どの掲示板もすぐ回答できる問題ではないですから。
みんなの叡智を拝見したいと思うわけ。
一概に否定されるのは科学技術色ではなくて、宗教邪教的な匂いプンプンでは?
単純な文法問題にわしは出さないだからね。
頑な宗教脳から打出して!
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月25日(土) 19:23
by みけCAT
こころな さんが書きました: ↑3年前
難しい問題に多くの人に早く聞きたいですね。何が悪いの?
フォーラムルール違反です。
相互リンクすればマルチポストOK
相互リンクした場合のみ複数の掲示板で同じ質問しても OK
複数の掲示板で同じ質問をすることをマルチポストといい、大抵禁止されています。
しかし、ここでは相互リンクし、リンク先の掲示板でマルチポストが許されていれば
マルチポストはOKとしています。複数の掲示板で同じ質問をするときは相互リンクし、
どこの掲示板で同じ質問をしているか明確にして下さい。
「
相互リンクした場合のみ複数の掲示板で同じ質問しても OK」となっています。
今回の場合、相互リンクなしで複数の掲示板で同じ質問をしているため、違反となります。
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月26日(日) 14:46
by usao
> 何が悪いの?
誰が「悪い」と言ったのか?
私はマルチポストである旨を周知しただけ.
それがきっかけとなって,あなたが利用している各所のルールに従っていないことに気付いたのであれば,今からでも各所において適切に対処すればよいのではあるまいか.
ルール違反を認識してもなお適切な措置を講じず,自分勝手だけを貫こうとするのであれば,それは「悪い」と思うが.
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月26日(日) 14:52
by usao
私が熱心な宗教家ならば真っ先に teratail の側に書いてるであろう.
あっちは厳しいですぞ.
Re: C++20で多量のthreadを一括発行と自動同期する方法
Posted: 2022年6月26日(日) 14:56
by usao
全ての箇所のルールに従った正当な(?)マルチポストであれば
ここのルールによって相互リンクが成されるのだから,あなただけでなく,読み手全員が
> みんなの叡智を拝見
できる形となるわけですな.すばらしい.