C++20で多量のthreadを一括発行と自動同期する方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
こころな

C++20で多量のthreadを一括発行と自動同期する方法

#1

投稿記事 by こころな » 1年前

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個まで続く....

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C++20で多量のthreadを一括発行と自動同期する方法

#2

投稿記事 by みけCAT » 1年前

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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

こころな

Re: C++20で多量のthreadを一括発行と自動同期する方法

#3

投稿記事 by こころな » 1年前

お返答ありがとうございます

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を一括発行と自動同期する方法

#5

投稿記事 by こころな » 1年前

難しい問題に多くの人に早く聞きたいですね。何が悪いの?

大体どの掲示板もすぐ回答できる問題ではないですから。
みんなの叡智を拝見したいと思うわけ。

一概に否定されるのは科学技術色ではなくて、宗教邪教的な匂いプンプンでは?

単純な文法問題にわしは出さないだからね。
頑な宗教脳から打出して!

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C++20で多量のthreadを一括発行と自動同期する方法

#6

投稿記事 by みけCAT » 1年前

こころな さんが書きました:
1年前
難しい問題に多くの人に早く聞きたいですね。何が悪いの?
フォーラムルール違反です。
相互リンクすればマルチポストOK
相互リンクした場合のみ複数の掲示板で同じ質問しても OK

複数の掲示板で同じ質問をすることをマルチポストといい、大抵禁止されています。

しかし、ここでは相互リンクし、リンク先の掲示板でマルチポストが許されていれば

マルチポストはOKとしています。複数の掲示板で同じ質問をするときは相互リンクし、

どこの掲示板で同じ質問をしているか明確にして下さい。
相互リンクした場合のみ複数の掲示板で同じ質問しても OK」となっています。
今回の場合、相互リンクなしで複数の掲示板で同じ質問をしているため、違反となります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
usao
記事: 1887
登録日時: 11年前

Re: C++20で多量のthreadを一括発行と自動同期する方法

#7

投稿記事 by usao » 1年前

> 何が悪いの?

誰が「悪い」と言ったのか?

私はマルチポストである旨を周知しただけ.
それがきっかけとなって,あなたが利用している各所のルールに従っていないことに気付いたのであれば,今からでも各所において適切に対処すればよいのではあるまいか.
ルール違反を認識してもなお適切な措置を講じず,自分勝手だけを貫こうとするのであれば,それは「悪い」と思うが.

アバター
usao
記事: 1887
登録日時: 11年前

Re: C++20で多量のthreadを一括発行と自動同期する方法

#8

投稿記事 by usao » 1年前

私が熱心な宗教家ならば真っ先に teratail の側に書いてるであろう.
あっちは厳しいですぞ.

アバター
usao
記事: 1887
登録日時: 11年前

Re: C++20で多量のthreadを一括発行と自動同期する方法

#9

投稿記事 by usao » 1年前

全ての箇所のルールに従った正当な(?)マルチポストであれば
ここのルールによって相互リンクが成されるのだから,あなただけでなく,読み手全員が

> みんなの叡智を拝見

できる形となるわけですな.すばらしい.

返信

“C言語何でも質問掲示板” へ戻る