0
我试图开发一个代码,生成N个线程进入循环。每个线程产生40个随机数字,并从中选出最高的数字。之后,我必须从所有选项中选出最高的数字。然而,当我返回每个线程的最高值(B),它是空的,这是我使用的代码:Boost从多线程向量返回值
class rdm_thr
{
public:
rdm_thr()
{
}
void rdmgen()
{
default_random_engine generator;
double rdm;
b=0;
normal_distribution<double> normal(0, 1);
for(int i=0; i<40; i++)
{
rdm = normal(generator);
if(rdm>b)
b = rdm;
}
}
};
void main()
{
vector<boost::thread *> z;
vector<rdm_thr> o;
boost::function<void()> th_func;
for (int i = 0; i < 2; i++)
o.push_back(rdm_thr());
for (int i = 0; i < 2; i++)
{
th_func = boost::bind(&rdm_thr::rdmgen, &o[i]);
boost::thread thr(th_func);
z.push_back(&thr);
}
for (int i = 0; i < 2; i++)
{
z[i]->join();
}
}
有另一种方式做到这一点?
尽管这不是代码的概念,但它帮助我解决了这个问题,非常感谢! –
很高兴我可以帮助,即使我误解了:)如果需要,我还可以编辑更清晰 – txtechhelp