首页
社区
课程
招聘
[已解决]求助多线程全局变量失败的问题
发表于: 2012-3-1 11:21 3838

[已解决]求助多线程全局变量失败的问题

2012-3-1 11:21
3838
UINT ThreadProc1(LPVOID pParam)
{
        bIsend1 = 0;
        FindPic(
                m_hWnds,
                m_cx,
                Min1,
                m_Width,
                Max1,
                strFileName,
                m_Similarity,
                m_SimColor,
                m_bDirection,
                &m_OutX1,
                &m_OutY1
                );
        dPrintf("X1:%d Y1:%d\n",m_OutX1,m_OutY1);

        bIsend1 = 1;

        dPrintf("%d\n",bIsend1);
       

        return 0;
}
UINT ThreadProc2(LPVOID pParam)
{
        bIsend2 = 0;
        FindPic(
                m_hWnds,
                m_cx,
                Min2,
                m_Width,
                Max2,
                strFileName,
                m_Similarity,
                m_SimColor,
                m_bDirection,
                &m_OutX2,
                &m_OutY2
                );

        dPrintf("X2:%d Y2:%d\n",m_OutX2,m_OutY2);

        bIsend2 = 1;

        dPrintf("%d\n",bIsend2);
       

        return 0;
}
UINT ThreadProc3(LPVOID pParam)
{
        bIsend3 = 0;
        FindPic(
                m_hWnds,
                m_cx,
                Min3,
                m_Width,
                Max3,
                strFileName,
                m_Similarity,
                m_SimColor,
                m_bDirection,
                &m_OutX3,
                &m_OutY3
                );
        dPrintf("X3:%d Y3:%d\n",m_OutX3,m_OutY3);

        bIsend3 = 1;

        dPrintf("%d\n",bIsend3);

        return 0;
}

void FindThread(
                                   HWND hWnd,
                                   int cx,
                                   int cy,
                                   int iWidth,
                                   int iHeight,
                                   LPCTSTR FileName,
                                   double Similarity,
                                   double SimColor,
                                   bool bDirection,
                                   int *OutX,
                                   int *OutY
                                   )
{
        m_hWnds = hWnd;

        m_Width = iWidth;

        Mean = iHeight / 3;

        Max1 = Mean;

        Max2 = Mean + Mean;

        Max3 = Mean + Mean + Mean;

        Min1 = 0;

        Min2 = Mean;

        Min3 = Mean + Mean;

        strFileName = FileName;

        m_Similarity = Similarity;

        m_SimColor = SimColor;

        m_bDirection = bDirection;

        DWORD a1,a2,a3;

        HANDLE hThtead1 =::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc1,0,0,&a1);

        HANDLE hThtead2 =::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc2,0,0,&a2);

        HANDLE hThtead3 =::CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadProc3,0,0,&a3);

        CloseHandle(hThtead1);
        CloseHandle(hThtead2);
        CloseHandle(hThtead3);

        dPrintf("%d\n",a1);
        dPrintf("%d\n",a2);
        dPrintf("%d\n",a3);

        while (true)
        {
                // 始终 bIsend1  2 3 都是假 死循环
                if (bIsend1 == true && bIsend2 == true && bIsend3 == true)
                {
                        dPrintf("%d\n",bIsend1);
                        dPrintf("%d\n",bIsend2);
                        dPrintf("%d\n",bIsend3);

                        dPrintf("X1:%d Y1:%d\n",m_OutX1,m_OutY1);
                        dPrintf("X2:%d Y2:%d\n",m_OutX2,m_OutY2);
                        dPrintf("X3:%d Y3:%d\n",m_OutX3,m_OutY3);
// 返回的坐标应该是两个-1 一个是坐标,但是打印出来3个返回的坐标都是一样的比如说返回 90,100 3个返回都是90,100
                        *OutX = m_OutX1;
                        *OutY = m_OutY1;
                        break;
                }
        }
}
这到底是什么问题帮忙呀,启动3个线程得到的结果一样 线程内已经给全局变量赋值但是不起作用晕

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
2
搞定了,浪费大家脑细胞,我赋值错误了
2012-3-1 12:32
0
雪    币: 485
活跃值: (78)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
3
识图,123456
2012-3-1 13:50
0
游客
登录 | 注册 方可回帖
返回
//