循环用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);
}