マルチスレッドプログラム
for文等を用いて、スレッドを複数作成したいのですが、エラーが出てしまい作りきれません。
途中までのコードを添付します。
よろしくお願いいたします。
void ThreadController::Process_Thread(){
vector<ThreadSet> threadData; // 各スレッドのデータを格納
ThreadSet oneData = { 0 }; // 1つのスレッドのデータを格納
vector<thread> threads; // 複数スレッドを格納
int dataNum = 0; // スレッド数を格納
int i = 0; // ループ用変数
// スレッド数の入力
cout << "スレッド数" << endl;
dataNum = Set_IntNumber();
// 各スレッドのデータを入力
for (i = 0; i < dataNum; ++i) {
cout << "名" << endl;
cin >> oneData.threadName;
cout << "タイム" << endl;
oneData.intervalTime = Set_IntNumber();
// スレッドデータに追加
threadData.push_back(oneData);
}
// スレッド実行
for (i = 0; i < dataNum; ++i) {
thread threads(Count_SpecifyInterval, threadData[i]);
}
// 終了を待つ
for (thread &th : threads) {
th.join();
}
}
int ThreadController::Set_IntNumber(){
int intervalTime = 0; // 入力された実行間隔を格納する変数
do {
// 実行間隔の入力
cout << ">";
cin >> intervalTime;
// 数字以外が打たれたときエラーを返す
if ((cin.fail()) || (intervalTime < TIME_MIN)) {
cin.clear();
// バッファを空に
while (getchar() != '\n');
cout << "正の整数のみ入力してください" << endl;
intervalTime = ERROR;
}
else {
// エンターキー読み捨て
getchar();
}
// 正の数でない場合再入力
} while (intervalTime < TIME_MIN);
return intervalTime;
}
void ThreadController::Count_SpecifyInterval( ThreadSet& dataSet ){
int i = 0; //
while ( i < COUNT_MAX ) {
// 動作の待機
this_thread::sleep_for(chrono::milliseconds(dataSet.intervalTime));
// カウントの加算、表示
++i;
cout << dataSet.threadName << ":" <<i << endl;
}
}