自从我的上一个问题关闭以来重新发布此内容..这次我试图更好地解释它...如果您需要进一步澄清,请告诉我:
我有一个带有函数 doSomething(int count) 的类 A 在 A 类中,我想打开 100 个线程,每个线程调用函数 doSomething() 并在每个线程中传入 1-100 的计数。
这意味着......当第一个线程调用这个函数时,它应该调用 doSomething(1),第二个线程应该调用 doSomething(2) 等等......
这就是我的代码的样子:
struct input {
A* in;
int count;
};
myFunc(void* data)
{
input* tP = (input*) data;
A* obj = tP->in;
int ct = tP->count;
obj->doSomething(ct);
}
class A {
doSomething(int count);
Thread2doSomething();
}
doSomething(int count)
{
cout<<"Print value is"<<count;
}
Thread2doSomething()
{
for (i = 1 to 100)
{
input myIN;
myIN.in = this;
myIN.count = i;
beginthreadex(myFunc, &myIN);
}
}
我希望上面的代码会在这里产生 100 个线程..当它调用 doSomething(); 时,每个线程都会有一个新的计数值 1,2,3...100;
在新线程上每次调用 doSomething 都应该有一个不同的 count 值传递给它 - 1,2,3,...到 100。
但这不会发生。传递给它的计数值是非常随机的......通常它多次获得相同的值......并且根本没有得到一些值。有时传递给 doSomething 的计数值在所有线程中都是相同的......
调用看起来更像这样:doSOthing(4)、doSomething(4)、doSomething(7)、doSomething(10)、doSomething(10) 等等。
希望我已经澄清了事情......请建议。