logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【无标题】

开机之后,QEMU 模拟器启动时,每个 CPU 核心都会跳转到 0x80000000所有核心执行相同的启动代码,但通过 mhartid 区分不同的核心。不同的cpu的栈地址也是不同的。不同的cpu会共享内存,但是各自的寄存器在物理上是完全分开的,所以不用担心竞争问题。stack0和mscratch0都在.bss段,操作系统一开始是按照实际的物理地址加载的。这两个数据结构在启动初期都会使用。具体在s

#单片机#嵌入式硬件
C++之“虚”篇

菱形继承问题发生在多重继承中,当一个派生类同时继承两个类的相同基类时,会导致该基类的成员变量和函数被多次继承,形成多余的冗余数据和不必要的复杂性。虚基类是虚继承的基础。当一个类通过虚继承继承另一个类时,继承的那个类就被称为虚基类。它允许通过基类的指针或引用调用派生类中的重写函数,而不管指针或引用的类型是什么。如果基类有纯虚函数,派生类必须提供一个实现,否则派生类也会变成抽象类,不能实例化。虚继承要

#c++#java#算法
C++并发编程

if (!在单线程empty()为真 ⇒top()一定有元素、不会 UBtop()和pop()连续执行,中间没有别的线程来插刀所以这是安全的代码。

#c++#开发语言
C++并发编程(3)——资源竞争下的安全栈

继承自。重写了what()函数,返回错误信息。const:保证这个函数不会修改对象状态。throw():老式的异常说明,表示函数不会抛出异常(C++11 之后用noexcept,这里是书上经典写法)。以后当栈为空却调用pop时,就会抛出这个异常。

#c++#安全#开发语言
C++并发编程(4)——死锁问题

场景一:互斥锁的嵌套获取导致死锁。解决方法是使用std::lock同时锁定多个互斥量。场景二:在持有锁时调用用户代码可能导致死锁。解决方法是在持有锁时避免调用可能获取其他锁的代码。场景三:固定顺序获取锁不一致导致死锁。解决方法是确保所有线程以相同的顺序获取锁。层次锁。

#c++#开发语言
stm32入门篇(6)

它的“时钟”可以理解为紧跟系统总线时钟,一直在工作;你做的只是给它配置“访问时间参数”(Latency)和“预取功能”。是一个定时器,用 SYSCLK(或其分频)作为计时源,经常被 RTOS 用来当“系统滴答”。图上 HSE 块只是“接口 + 控制电路”,真正的振荡元件在芯片外。是“独立的日历/时间计时模块”,通常用低速时钟、可掉电保持。:要在板子上焊“石英石头”(晶振)或有源模块 → 外部时钟。

#stm32#嵌入式硬件#单片机
到底了