循环用CreateThread创建多线程的传参有关问题
循环用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
------解决方案--------------------
这样,不就行了
我本来打算给第一个创建的线程传入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);
}