createthread()传递参数问题
我想用一个for循环建立四个thread,然后每个打印自己的号码,代码如下#include<stdio.h>#include<windows.h>constintnumT...
我想用一个for循环建立四个thread,然后每个打印自己的号码,代码如下
#include <stdio.h>
#include <windows.h>
const int numThreads = 4;
DWORD WINAPI helloFunc(LPVOID pArg)
{
int temp = *((int*) pArg);
printf("Hello Thread! I'm thread %d !\n",temp);
return 0;
}
int main()
{
HANDLE hThread[numThreads];
for (int i = 0; i < numThreads; i++) {
hThread[i] = CreateThread(NULL, 0, helloFunc, (void*)&i, 0, NULL);
}
WaitForMultipleObjects(numThreads, hThread, TRUE, INFINITE);
system("pause");
return 0;
}
但是实际运行的时候,打印的号码不正确,会出现全部都是3的情况,求问为什么,在线等 展开
#include <stdio.h>
#include <windows.h>
const int numThreads = 4;
DWORD WINAPI helloFunc(LPVOID pArg)
{
int temp = *((int*) pArg);
printf("Hello Thread! I'm thread %d !\n",temp);
return 0;
}
int main()
{
HANDLE hThread[numThreads];
for (int i = 0; i < numThreads; i++) {
hThread[i] = CreateThread(NULL, 0, helloFunc, (void*)&i, 0, NULL);
}
WaitForMultipleObjects(numThreads, hThread, TRUE, INFINITE);
system("pause");
return 0;
}
但是实际运行的时候,打印的号码不正确,会出现全部都是3的情况,求问为什么,在线等 展开
1个回答
展开全部
#include <stdio.h>
#include <windows.h>
// 创建 10 个线程并退出
DWORD WINAPI func(void *i)
{
printf("线程 %d\n", *(int *)i);
return 0;
}
int main(void)
{
HANDLE t[10];
int i;
for (i=0; i<10; i++)
{
t[i] = CreateThread(NULL, 0, func, (void *)(&i), 0, NULL);
Sleep(20); // 让线程有时间执行完
}
for (i=0; i<10; i++)
CloseHandle(t[i]);
return 0;
}
楼主自己看下,这是创建十个线程并退出的代码
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询