欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++ Part8 MFC中的AfxBeginThread的使用方法(代码实例)

程序员文章站 2022-04-12 20:43:07
C++ Part8 MFC中的AfxBeginThread的使用方法(代码实例) 1、【AfxBeginThread】参数,如果只是简单的传【int】类型的 //多线程函数...

C++ Part8 MFC中的AfxBeginThread的使用方法(代码实例)

1、【AfxBeginThread】参数,如果只是简单的传【int】类型的

//多线程函数的定义;  
UINT Thread1(int pParam)  
{  
    int nSize = pParam;  
    //你的其他处理代码。。。  
    return 0;  
}  

//多线程的使用部分;  
int nSize = 50;  
AfxBeginThread((AFX_THREADPROC)Thread1, (VOID*)nSize , THREAD_PRIORITY_NORMAL, 0, 0, NULL);  

【AfxBeginThread】参数,如果要传多个参数或者传入结构体

//定义一个全局的结构体;  
typedef struct SthData   
{  
    int iStr;  
    int iEnd;  
}*pSthData;  

//多线程函数的定义;  
VOID Thread1(LPVOID lpParam)  
{  
    //获得结构体中的值;  
    SthData* pStcSthData = (SthData *)lpParam;  
    int iStr = pStcSthData->iStr;   
    int iEnd = pStcSthData->iEnd;  

    //你的其他处理代码。。。  

    //最后记得删除结构体的指针并指向NULL;  
    delete pStcSthData;  
    pStcSthData = NULL;  
}  

//多线程的使用部分;  
    pSthData pDataValue1 = new SthData;  
    memset(pDataValue1, 0x00, sizeof(SthData));  
    pDataValue1->iStr = 0;  
    pDataValue1->iEnd = 10;  

    AfxBeginThread((AFX_THREADPROC)Thread1, pDataValue1, THREAD_PRIORITY_NORMAL, 0, 0, NULL);  

注:结构体创建后在析构时需要:

delete pDataValue1 ;
pDataValue1 = NULL;  //防止野指针

否则在调试传参时,看到的结构体内部数据为乱码。