贵州网站建设 零玖伍壹网络,动画设计怎么自学,做网站还需要买服务器么,定制网站开发介绍图1. 为什么要引入线程同步互斥机制
线程共享用户空间#xff0c;当多个线程访问临界资源时会产生竟态#xff0c;引入线程同步互斥机制是为了保护临界资源 2. 同步互斥的基本概念
临界资源#xff1a;多线程任务执行时#xff0c;能够同时访问的公共资源叫做临界资源临界区…1. 为什么要引入线程同步互斥机制
线程共享用户空间当多个线程访问临界资源时会产生竟态引入线程同步互斥机制是为了保护临界资源 2. 同步互斥的基本概念
临界资源多线程任务执行时能够同时访问的公共资源叫做临界资源临界区操作临界资源的代码段叫做临界区竞态多个线程公共强占临界资源的现象叫做竞态互斥机制多个线程同一时刻只能有一个线程访问临界资源直到当前线程释放了临界资源的使用其他线程才能继续抢占同步机制多个线程按顺序使用临界资源解决同步互斥问题 互斥锁无名信号量条件变量
3. 互斥锁
互斥锁本质上也是一个全局变量是一个特殊的临界资源当有一个线程获取到该互斥锁后其余线程就不能再获取该锁资源直到占有互斥锁资源的线程将锁资源释放后才能有机会抢到关于互斥锁的操作 定义互斥锁、初始化互斥锁、上锁获取锁资源、解锁释放锁资源、销毁锁
4. 无名信号量
同步多个任务有顺序的执行并且线程任务有执行先后顺序最典型的例子是生产者消费者模型生产者任务用于生产资源而消费者任务用于消费资源必须生产者先生产资源消费者才能消费资源无名信号量本质上维护了一个value值当生产者线程释放资源后value值会增加消费者申请value值后该值会减少当value值为0时消费者线程任务申请资源处会阻塞无名信号量也是一个临界资源生产者或消费者一端改变该值另一端也会进行修改无名信号量适用一个生产者和一个消费者当有多个消费者的时候无法解决多个消费者之间的竟态
5. 条件变量
条件变量条件变量维护了一个队列当消费者线程需要申请资源时先进入等待队列中等待生产者线程的通知生产者线程完成后会优先通知等待队列中的第一个休眠线程进入唤醒状态。条件变量机制完成的是一个生产者和多个消费者之间的同步关系但是消费者线程和消费者线程在进入休眠等待队列的操作上是互斥的所以要引入互斥锁条件变量解决了一个生产者和多个消费者的同步问题 目录目录 / 学习笔记快速链接