首先,我不是英语,所以我会尽力解释。 我抛出这个线程,其中saludo意味着问候,延迟意味着延迟,数字意味着数字,我也创造了多次说这将发生的veces。所以我要做的是创建10个线程,它将在屏幕上显示5到15次,并且延迟从100到300,它们是一个数字(" Soy"数字),但我有那个我无法解决的错误。它适用于2-3个线程然后停止。谢谢顺便说一句。
#include <iostream>
#include <thread>
#include <string>
#include <chrono>
#include <time.h>
using namespace std;
void saludo(string m, int retardo, int numero) {
string tabs(numero - 1, '\t');
cout << tabs << m << numero << +"\n";
this_thread::sleep_for(chrono::milliseconds(retardo));
}
int main() {
int nthread = 10;
srand(time(NULL));
thread P[nthread];
int i = 0;
while(i<nthread){
int retardo = rand() % 201 + 100;
int veces = rand() % 11 + 5;
for (int x = 0; x<veces; ++x){
int numero = rand() % 10;
P[i] = thread(&saludo, "Soy ", retardo, numero);
P[i].join();
}
}
cout << "Fin\n";
return 0;
}
答案 0 :(得分:3)
此错误是因为您可能已将负数传递给std :: string构造函数。如果rand() % 10
为0,那么string tabs(numero - 1, '\t');
可能会给numero
这是一个问题。