在这篇文章中,我们会为大家详细推出
C++
CreateThread参数的具体应用方法,以帮助大家能够从中获得一些帮助,提高编程效率。那么接下来就让我们一起来看看C++ CreateThread参数的正确使用方法吧。
项目是VS2003下的,用到了CreateThread函数,看到网上说不应该调用CreateThread,而应该使用_beginthreadex。因为刚好用到了,就还是写一下CreateThread中参数的使用方法。
先定义要传递的C++ CreateThread参数结构体:
typedef struct SParam
{
int No;
unsigned short chnlID;
unsigned short sessionID;
}uParam,*sParam;
DWORD WINAPI AccountManager(PVOID pParam);
void main()
{
DWORD dwThreadId;
HANDLE hThrd = NULL; // thread handle
SParam sparam;
SParam *p;
sparam.No = 1;
sparam.chnlID = 1;
sparam.sessionID = 1;
p = &sparam;
hThrd = (HANDLE)CreateThread(NULL,
0,
AccountManager,
p,
0,
dwThreadId;
}
DWORD WINAPI AccountManager(PVOID pParam)
{
sParam sparam;
sparam = (sParam)pParam;
try {
Run(sparam ->No,sparam->chnlID,sparam->sessionID);
}
catch (...)
{
logger.error('AccountManager(%d): System error.\r\n', threadId);
}
}
项目是VS2003下的,用到了CreateThread函数,看到网上说不应该调用CreateThread,而应该使用_beginthreadex。因为刚好用到了,就还是写一下CreateThread中参数的使用方法。
先定义要传递的C++ CreateThread参数结构体:
typedef struct SParam
{
int No;
unsigned short chnlID;
unsigned short sessionID;
}uParam,*sParam;
DWORD WINAPI AccountManager(PVOID pParam);
void main()
{
DWORD dwThreadId;
HANDLE hThrd = NULL; // thread handle
SParam sparam;
SParam *p;
sparam.No = 1;
sparam.chnlID = 1;
sparam.sessionID = 1;
p = &sparam;
hThrd = (HANDLE)CreateThread(NULL,
0,
AccountManager,
p,
0,
dwThreadId;
}
DWORD WINAPI AccountManager(PVOID pParam)
{
sParam sparam;
sparam = (sParam)pParam;
try {
Run(sparam ->No,sparam->chnlID,sparam->sessionID);
}
catch (...)
{
logger.error('AccountManager(%d): System error.\r\n', threadId);
}
}