![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SylixOS线程
文章平均质量分 53
线程学习
Crush_u
你好哇_李银河
展开
-
优先级翻转场景设计及实现(C语言实现)
【代码】优先级翻转场景复现涉及(C语言实现)原创 2023-10-24 20:40:52 · 199 阅读 · 0 评论 -
POSIX 互斥锁&属性块
目录互斥锁属性块1.互斥锁属性块的初始化和删除2.设置和获取互斥锁属性块的类型3.设置和获取互斥锁属性块的算法类型4.设置和获取互斥锁属性块的天花板优先级5.设置和获取互斥锁属性块的进程共享属性互斥锁1.互斥锁的初始化和删除2.互斥锁的等待3.互斥锁的释放4.设置和获取互斥锁的天花板优先级原创 2021-04-23 13:57:24 · 398 阅读 · 0 评论 -
SylixOS 内核线程2
线程功能使用条件是否可裁剪裁剪宏备注t_idle空闲线程系统空闲线程不可裁剪t_itimer系统普通定时器周期服务线程应用程序使用定时器工作可裁剪LW_CFG_ITIMER_EN就是应用程序使用timerfd定时t_isrdefer中断延时处理中断延时处理不可裁剪LW_CFG_ISR_DEFER_EN是否提供内核中断延迟处理工作队列管理(PCI的sio)t_except处理异常消息的线程系统异常处理线程不可裁剪t_l...原创 2021-04-15 10:42:17 · 227 阅读 · 0 评论 -
线程状态 - ts
查看线程此时所处的状态可通过 Shell 命令 ts 查看“STAT”列,如下,线程“t_test”处于“SLP”状态。原创 2021-04-06 17:43:41 · 617 阅读 · 0 评论 -
SylixOS 内核线程1
原创 2021-03-26 14:42:01 · 147 阅读 · 0 评论 -
POSIX 条件变量
目录基本理解代码实现逻辑分析基本理解条件变量是用于线程同步,关注对象是共享数据状态的变化,用来协调各个线程合作完成某个任务。当一个动作需要另外一个动作完成时才能进行时,即:当一个线程的行为依赖于另外一个线程对共享数据状态的改变时,这时候就可以使用条件变量。条件变量是与互斥量相关联的一种用于多线程之间关于共享数据状态改变的通信机制。 条件变量与互斥量一起使用的时候,允许线程以无竞争的方式等待特定的条件发生。 条件变量是由互斥量保护的,线程在改变条件变量状态前必须先锁住互斥量。原创 2021-03-20 18:06:12 · 302 阅读 · 0 评论 -
SylixOS信号量(二进制信号量、 计数型信号量、 互斥信号量(简称互斥量)、 读写信号量)
目录SylixOS 信号量二进制信号量互斥信号量计数器信号量SylixOS 信号量多个线程在读写某个共享数据(全局变量等)时必须通过某种方法实现共享数据的互斥访问或者同步访问(例如线程 B 等待线程 A 的结果以继续运行)。其中,信号量是一种最常见的方法。SylixOS 信号量包括四种类型:二进制信号量、 计数型信号量、 互斥信号量(简称互斥量)、 读写信号量。信号量是一种约定机制:在共享资源的互斥访问中,它约定当一个线程获得信号量(Wait)后,其他线程不可以原创 2020-09-09 17:44:06 · 804 阅读 · 0 评论 -
二进制信号量
目录1.creat2.delete3.wait4.post5.clear6.属性二进制信号量二进制信号量的基本操作函数在线程与线程之间、中断与线程之间的操作过程如下图所示。SylixOS 二进制信号量1.creat二进制信号量主要应用在以下场合: 有允许线程访问的一个资源,使用二进制信号量作为互斥手段,初始值为 TRUE; 线程或中断通知另一个线程某件事件发生,初始值为 FALSE。SylixOS 提供函数Lw_Semaph...原创 2020-09-09 17:33:39 · 1082 阅读 · 0 评论 -
计数型信号量
计数型信号量计数型信号量通常用于多个线程共享使用某资源。下图显示了SylixOS计数型信号量的基本操作函数在线程与线程之间、中断与线程之间的操作过程。 SylixOS 计数型信号量1.Create一个 SylixOS 计数型信号量可以调用 Lw_SemaphoreC_Create 函数进行创建。#include <SylixOS.h>LW_HANDLE Lw_SemaphoreC_Create(CPCHAR pcName, ULONG ulInitCou原创 2020-09-15 10:01:14 · 880 阅读 · 0 评论 -
互斥信号量
互斥信号量用于共享资源需要互斥访问的场合,可以理解为初始值为 TRUE 的带优先级天花板和优先级继承机制(意在解决优先级反转问题)的二进制信号量,只有拥有互斥信号量的线程才有权释放互斥信号量。...原创 2020-10-26 21:01:00 · 1038 阅读 · 0 评论 -
读写信号量
当出现多个读者,单个写者的情况时,单纯地使用互斥信号量将极大地减弱多线程操作系统的处理性能。为了满足这种高并发的处理速度问题,SylixOS 引入了读写信号量,它的应用场景类似于 POSIX 读写锁。 SylixOS 读写信号量满足写优先的原则,也就是说,如果已经存在写信号量,则不能再申请读信号量,直到写信号量被释放。但是当已经存在读信号量时,可以再次请求读信号量。这种机制满足了读的高并发性。 1、Creat一个 SylixOS 读写信号量必须要调用 Lw_SemaphoreRW_Crea.原创 2020-10-27 09:37:19 · 446 阅读 · 0 评论 -
死锁
什么是死锁死锁,就是指多个线程循环等待它方占有的资源而无限期地僵持下去的局面。如果没有外力的作用,那么死锁涉及到的各个线程都将永远处于阻塞状态。 就如同两个人过独木桥,如果两个人都要先过,在独木桥上僵持不肯后退,必然会因竞争资源产生死锁;但是,如果两个人上桥前先看一看对面有无人在桥上,当对面无人在桥上时自己才上桥,那么问题就解决了。死锁死锁的产生条件如果在计算机系统中发生死锁,必须同时具备下面四个必要条件。互斥条件 即某个资源在一段时间内只能由一个线程占有,不能同时被.原创 2020-09-21 18:09:19 · 317 阅读 · 0 评论 -
优先级反转 - C语言模拟实现及解决方案
什么是优先级反转 先举一个共享资源竞争的例子:两个线程需要同时将同一个变量 V(初始值为 0)进行自增操作。解决共享资源竞争的办法是加入一把锁,在访问变量 V 前占有该锁,在访问后释放该锁。一般情况下,我们可以使用初始值为 TRUE 的二进制信号量或初始值为 1 的计数型信号量作为锁。 现在我们把这个例子稍加改动,有三个线程(线程 A、线程 B、线程 C)和一个变量 V,线程 A 和线程 B 需要同时访问变量V。很显然我们需要一把锁(即保护变量 V 的锁 L)。 线程 A 的优先级为 ...原创 2020-09-19 17:49:31 · 704 阅读 · 0 评论 -
信号量和条件变量 对比
信号量:多个线程在读写某个共享数据(全局变量等)时必须通过某种方法实现共享数据的互斥访问或者同步访问(例如线程 B 等待线程 A 的结果以继续运行)。其中,信号量是一种最常见的方法。信号量是一种约定机制:在共享资源的互斥访问中,它约定当一个线程获得信号量(Wait)后,其他线程不可以再次获得该信号量直到信号量被释放(Give);在同步机制中,它约定等待信号量(Take)的线程(或者说等待信号更确切)在收到信号量之前应该处于阻塞状态,直到其他线程发送该信号量(Post)。通常情况...原创 2020-10-14 19:39:29 · 989 阅读 · 0 评论 -
自旋锁和互斥锁
自旋锁属于互斥锁的一种,都是为了解决某项资源的互斥使用。理解:线程A正在占用CPU使用时,线程B也想要占用CPU,但此时A已经加了使用标志(锁),那么B就可以有不同的操作 一、占用。不断循环并测试锁的状态,线程不会挂起(睡眠),处于忙等状态,采用这种行为的锁叫做自旋锁。 二、等待。线程B休眠阻塞,放弃CPU,直到A执行完了,锁没了,再使用内存。这种行为叫做互斥锁。 互斥锁:用于保护临界区,确保同一时间只有一个线程访问数据。对共享资源的访问,先对互斥量进行加锁,如果互斥量已经上原创 2020-10-10 20:05:06 · 654 阅读 · 1 评论