c/c++ Windows 多线程

本文介绍了Windows下C/C++的多线程编程,包括进程和线程的概念,如何创建线程,创建事件,等待线程结束,触发事件以及使用锁进行线程同步。线程在进程中的作用,以及CreateThread函数用于创建线程的详细参数说明,还涉及到Sleep函数的使用,事件的创建与触发以及CRITICAL_SECTION对象在锁机制中的应用。

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

进程/线程

#

1: 每一个程序运行的时候,操作系统会给这个程序分配一个进程,以32位的操作系统为例:就会分配4GB的虚拟内存空间(代码段,数据段,栈,堆),将程序的代码加载到代码段,并运行程序,执行程序的指令;
2:什么是线程
(1)线程是基于进程的轻量级的调度单元,线程是在一个进程中创建出来的,当一个进程出来后,他本身就对应为一个线程。
(2)一个进程还可以创建多个线程,这些线程共享进程的代码段,堆,数据段,唯一不共用的是栈,每一个线程都会有自己独立的栈,这样每一个线程的函数调用与执行都是独立的互不影响;
(3)线程在执行过程中,随时有可能挂起调度出去,所以当两个线程在访问共同的资源的时候要特别注意数据的同步;
(4)数据段,代码段,堆上的数据各个线程可以共享访问;


创建线程

1: 创建一个线程;
HANDLEWINAPICreateThread(
LPSECURITY_ATTRIBUTESlpThreadAttributes,
SIZE_TdwStackSize,
LPTHREAD_START_ROUTINElpStartAddress,
LPVOIDlpParameter,
DWORDdwCreationFlags,
LPDWORDlpThreadId
);
函数说明:
第一个参数表示线程内核对象的安全属性,一般传入NULL表示使用默认设置。
第二个参数表示线程栈空间大小。传入0表示使用默认大小(1MB)。
第三个参数表示新线程所执行的线程函数地址,多个线程可以使用同一个函数地址。
第四个参数是传给线程函数的参数。
第五个参数指定额外的标志来控制线程的创建,为0表示线程创建之后立即就可以进行调度,如果为CREATE_SUSPENDED则表示线程创建后暂停运行,这样它就无法调度,直到调用ResumeThread()。
第六个参数将返回线程的ID号,传入NULL表示不需要返回该线程ID号。
函数返回值:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值