第三篇 | 并发与竞争
文章平均质量分 96
并发与竞争
北京迅为
让学习更简单,让开发更容易
展开
-
RK3568驱动指南|第三篇-并发与竞争-第19章 并发与竞争实验
在前面章节的学习中,相信大家已经对用户空间与内核空间数据传递进行了实验,假如要传递的数据被存放在了全局变量,该数据就可以作为共享资源被多个任务共同读写,从而造成数据的错误传输,多个程序同时访问一个共享资源产生的问题就叫做竞争。竞争产生的根本原因就是Linux系统的并发访问。在本章节中首先会对并发与并行的概念进行讲解,随后对竞争产生的原因进行总结,最后以一个实际的竞争实验加深大家的理解。下面就让我们开始本章节的学习吧。原创 2023-09-09 09:21:59 · 428 阅读 · 0 评论 -
RK3568驱动指南|第三篇-并发与竞争-第20章 原子操作实验
在上一章节的实验中,对并发与竞争进行了实验,两个app应用程序之间对共享资源的竞争访问引起了数据传输错误,而在Linux内核中,提供了四种处理并发与竞争的常见方法,分别是原子操作、自旋锁、信号量、互斥体,在之后的几个章节中会依次对上述四种方法进行讲解。本章首先对四种常见方法中的原子操作进行讲解。原创 2023-09-09 09:22:34 · 321 阅读 · 0 评论 -
RK3568驱动指南|第三篇-并发与竞争-第21章 自旋锁实验
在上一节中对原子操作进行了讲解,并使用原子整形操作对并发与竞争实验进行了改进,但是原子操作只能对整形变量或者位进行保护,而对于结构体或者其他类型的共享资源,原子操作就力不从心了,这时候就轮到自旋锁的出场了,下面就让我们一起来进行自旋锁的学习吧。原创 2023-09-09 09:23:58 · 102 阅读 · 0 评论 -
RK3568驱动指南|第三篇-并发与竞争-第22章 自旋锁死锁实验
在上一小节中,学习了内核中自旋锁的使用,而自旋锁若是使用不当就会产生死锁,在本章将会对自旋锁的特殊情况-死锁进行讲解。原创 2023-09-09 09:24:38 · 111 阅读 · 0 评论 -
RK3568驱动指南|第三篇-并发与竞争-第23章 信号量实验
在上面两个章节对自旋锁和自旋锁死锁进行了学习,自旋锁会让请求的任务原地“自旋”,在等待的过程中会循环检测自旋锁的状态,进而占用系统资源,而本章节要讲解的信号量也是解决竞争的一种常用方法,与自旋锁不同的是,信号量会使等待的线程进入休眠状态,适用于那些占用资源比较久的场合。下面对信号量相关知识的进行讲解。原创 2023-09-09 09:25:09 · 101 阅读 · 0 评论 -
RK3568驱动指南|第三篇-并发与竞争-第24章 互斥锁实验
在上一章节中对信号量进行了学习,而本章节要学习的互斥锁可以说是“量值”为 1 的信号量,最终实现的效果相同,既然有了信号量,那为什么还要有互斥锁呢,带着疑问,让我们来进行本章节的学习吧!原创 2023-09-09 09:25:47 · 87 阅读 · 0 评论