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的情况,求问为什么,在线等
展开
 我来答
小德子abc
推荐于2018-04-12
知道答主
回答量:1
采纳率:0%
帮助的人:2.4万
展开全部
#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;
}

楼主自己看下,这是创建十个线程并退出的代码

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式