Windows编程 | 第八讲 多线程与线程同步

1.进程与线程

什么是内核对象?

在这里插入图片描述

程序与进程

在这里插入图片描述
在这里插入图片描述

线程

在这里插入图片描述
在这里插入图片描述

线程的运行

在这里插入图片描述


2.简单多线程示例

线程创建函数

在这里插入图片描述

HANDLE CreateThread (  
SEC_ATTRS SecurityAttributes,  //通常设置为NULL,该线程使用默认的安全性
ULONG StackSize,// 通常设置为0,默认使用与调用函数的线程相同的栈空间大小
SEC_THREAD_START StartFunction, //新创建的线程的入口函数,该参数指定这个函数的入口函数 
PVOID ThreadParameter,  //通过这个参数给创建的新线程传递参数
ULONG CreationFlags, //它可以是两个值中的一个:CREATE_SUSPENDED和 0。前者表示线程在创建后处于暂停状态,直到程序调用ResumeThread函数为止;如果为0,则线程在创建之后立即运行。
PULONG ThreadId); //Windows 2000以上的操作系统,该参数可以设为NULL

线程入口函数的声明形式

在这里插入图片描述

一个简单的多线程程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sleep函数

在这里插入图片描述

线程间的交替执行

在这里插入图片描述


3.线程同步

引言

在这里插入图片描述

火车站售票系统模拟程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上述程序的隐患

在这里插入图片描述

原因分析

在这里插入图片描述

线程同步

在这里插入图片描述

线程同步原理

在这里插入图片描述

线程同步的方法

在这里插入图片描述


4.利用互斥对象实现线程同步

互斥对象

在这里插入图片描述

获得互斥对象所有权

在这里插入图片描述

释放互斥对象所有权

在这里插入图片描述

实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


5.利用临界区实现线程同步

临界区对象

在这里插入图片描述

相关API函数

在这里插入图片描述

实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

互斥对象与临界区的比较

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值