创建线程CreateThread()

本文详细介绍了Windows API中的CreateThread函数,包括其函数原型、参数说明及返回值等内容,并提供了使用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 函数原型
 2 MSDN中CreateThread原型:
 3 HANDLE CreateThread(
 4   LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
 5   SIZE_T dwStackSize, // initial stack size
 6   LPTHREAD_START_ROUTINE lpStartAddress, // thread function
 7   LPVOID lpParameter, // thread argument
 8   DWORD dwCreationFlags, // creation option
 9   LPDWORD lpThreadId // thread identifier
10   );
11 参数说明
12 lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,NULL使用默认安全性,不可以被子线程继承,否则需要定义一个结构体将它的bInheritHandle成员初始化为TRUE
13 dwStackSize,设置初始栈的大小,以字节为单位,如果为0,那么默认将使用与调用该函数的线程相同的栈空间大小。任何情况下,Windows根据需要动态延长堆栈的大小。
14 lpStartAddress,指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明:
15 DWORD WINAPI ThreadProc (LPVOID lpParam) ,格式不正确将无法调用成功。
16 //也可以直接调用void类型
17 //但lpStartAddress要这样通过LPTHREAD_START_ROUTINE转换如:(LPTHREAD_START_ROUTINE)MyVoid
18 //然后在线程声明为:
19 void MyVoid()
20 {
21 return;
22 }
23 lpParameter:向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。
24 dwCreationFlags :线程标志,可取值如下
251)CREATE_SUSPENDED(0x00000004):创建一个挂起的线程,
2620:表示创建后立即激活。
273)STACK_SIZE_PARAM_IS_A_RESERVATION(0x00010000):dwStackSize参数指定初始的保留堆栈的大小,否则,dwStackSize指定提交的大小。该标记值在Windows 2000/NT and Windows Me/98/95上不支持。
28 lpThreadId:保存新线程的id。
29 返回值:
30 函数成功,返回线程句柄;函数失败返回false。
31 若不想返回线程ID,设置值为NULL。
32 函数说明:
33 创建一个线程。
34 语法:
35 hThread = CreateThread (&security_attributes, dwStackSize, ThreadProc,pParam, dwFlags, &idThread) ;
36 一般并不推荐使用 CreateThread函数,而推荐使用RTL库里的System单元中定义的 BeginThread函数,因为这除了能创建一个线程和一个入口函数以外,还增加了几项保护措施。
37 在MFC程序中,应该调用AfxBeginThread函数,在Visual C++程序中应调用_beginthreadex函数。

 

转载于:https://www.cnblogs.com/sevenology/archive/2013/05/29/3105926.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值