读书人

循环用CreateThread创建多线程的传参有

发布时间: 2013-07-08 14:13:00 作者: rapoo

循环用CreateThread创建多线程的传参问题
我本来打算给第一个创建的线程传入1,第二个创建的线程传入2

于是我就这样写
主函数循环创建线程

for (i=1;i<=5;i++)
{
hThread[i-1] = CreateThread(NULL,0,FileThread,&i,0,NULL);
}

子线程中直接打印出传入的参数

结果全部打印6

我调试了一下,是因为CreateThread传入的参数是一个地址, CreateThread创建子线程速度快

所以子线程读取地址中的值的时候i已经自加到6了

问怎么才能用循环实现第一个创建的线程传入1,第二个创建的线程传入2 多线程 CreateThread 传参
[解决办法]
这样,不就行了

for (i=1;i<=5;i++)
{
hThread[i-1] = CreateThread(NULL,0,FileThread,i,0,NULL);
}

读书人网 >C++

热点推荐