vc编程中多线程如何传递多个参数?

多线程编程常用CreateThread函数,但是该函数只能传递一个参数,要传递多个参数该怎么办呢?

其实我们把多个参数放到一个结构体中,然后把结构体的指针传递到线程函数就可以解决这个问题了。

代码如下:

先定义一个结构体,用来存放需要传递的参数;

struct Info
{
VOID* Dlg;
VOID* iStructP;
VOID* iStructM;
VOID* iStructG;
VOID* iStructPack;
};

在主函数中给参数赋值;

Info info;
info.Dlg = (VOID*)this;
info.iStructM = &monster;
info.iStructP = &player;
info.iStructPack = &package;
info.iStructG = &ggoods;

创建线程函数;

HANDLE handle = CreateThread(NULL, 0, FightMonster, (LPVOID)&info, 0, NULL);
Sleep(1000);
CloseHandle(handle);

线程函数中把参数弄出来;

Info *p = (Info*)pParam;
TabFunTest* pDlg=(TabFunTest*)p->Dlg;
Monster* pMon = (Monster*)p->iStructM;
Player* pPlay = (Player*)p->iStructP;
GroundGoods* pGoods = (GroundGoods*)p->iStructG;

好了,现在就可以愉快滴玩耍了。

posted @ 2021-02-14 14:20  子书无有  阅读(361)  评论(0编辑  收藏  举报