Esdeath_yzh 2017-04-22 06:58 采纳率: 100%
浏览 876
已采纳

关于C++线程的一个问题

#include
#include"stdlib.h"
#include
#include"windows.h"
using namespace std;
DWORD WINAPI threadfun(LPVOID pParam)
{
int count=*(int*)pParam;
printf("count:%d",count);
Sleep(1000);
return 0;
}
const int THREAD_NUM=10;
int main()
{
HANDLE handle[10];
int i=0;
while(i<10)
{
cout<<i;
handle[i]=(HANDLE)::CreateThread(NULL,0,threadfun,(LPVOID)&i,0,(LPDWORD)&i);
i++;
}
WaitForMultipleObjects(THREAD_NUM,handle,TRUE,INFINITE);
system("pause");
return 0;
}


不知道为啥一运行局部变量i就会变成一个未知的数。。是因为主线程改变了还是子线程的问题,导致每次都会有数组越界。。

  • 写回答

2条回答 默认 最新

  • oyljerry 2017-04-22 08:45
    关注

    i会被主线程修改,子线程中都是地址。所以子线程读取的时候i值会变化

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R