在这篇文章中,我们会为大家详细推出C++ CreateThread参数的具体应用方法,以帮助大家能够从中获得一些帮助,提高编程效率。那么接下来就让我们一起来看看C++ CreateThread参数的正确使用方法吧。7 D9 d1 c2 J# D. D
项目是VS2003下的,用到了CreateThread函数,看到网上说不应该调用CreateThread,而应该使用_beginthreadex。因为刚好用到了,就还是写一下CreateThread中参数的使用方法。
7 z9 F* G. z; {, e 先定义要传递的C++ CreateThread参数结构体:
1 [0 A0 q9 u# c/ [8 f typedef struct SParam$ {% b! t" _' L; b4 ?
{
/ ]: W; [6 c* r! j1 {3 K1 O int No;
2 k) T0 A3 W$ t8 c unsigned short chnlID;
8 b/ Y" z; a1 S2 J unsigned short sessionID;' }7 z x# K3 _
}- F0 Y J/ C4 K- c; x; K" A. F8 n
uParam,*sParam;
# A3 B- p/ S, M3 @* b& C# [ DWORD WINAPI AccountManager
0 T2 l" n2 U- x) O" K (PVOID pParam);7 C! |) X( v* Y% {9 M I! Z3 j# x' T
void main()
8 F) [6 d0 _& k+ T { DWORD dwThreadId;
+ G7 V3 Q u" r6 `& d+ e3 K HANDLE hThrd = NULL;
. B) x# y3 n5 X // thread handle SParam sparam;' M' b- b7 Y: ]
SParam *p; sparam.No = 1;
3 @ Y# f: V- ^9 d( k3 X# |( B sparam.chnlID = 1;
! W+ C/ O' {6 k1 F6 x/ W& j. g sparam.sessionID = 1;
2 y1 U" J7 H: [! r p = &sparam;
- s. p. m& y% [- _ hThrd = (HANDLE)CreateThread(NULL, 0, AccountManager, p, 0, dwThreadId;
1 }3 x8 L4 I& J" \ }
2 s8 F8 a2 I7 o8 K4 f. V' f5 Z DWORD WINAPI AccountManager(PVOID pParam); d# s( s0 S% E* Y
{ sParam sparam;$ y, r/ N6 R3 Q7 a2 Y( F5 H$ `* |- ]. h
sparam = (sParam)pParam;
( C" w4 r, c; s9 M& m6 G( K. S try% g4 B0 Y) H! w9 }
{ /*Run为自己写的一个方法,Run(int i,unsigned short chnlID,unsigned short sessionID)*/2 T+ J3 L; Z2 b. ]
Run(sparam->No,sparam->chnlID,sparam->sessionID);6 S* L: J1 D: v" o% l
} catch (...)- k; H- R9 [6 w; Y8 y
{ logger.error("AccountManager(%d): System error.\r\n", threadId);1 {+ |6 _* C8 Z5 J& X" _0 R
}
4 U, w) T. c: k' m% f6 o }
0 J+ {8 S e9 q% c, ? 大体意思是这样,C++ CreateThread参数代码仅供参考。 |