DiuR21Laonnu

DiuR21Laonnu

C++ mutex解析

什么是mutex互斥锁(Mutual exclusion,缩写Mutex)是一种用于多线程编程中,防止两条线程对同一公共资源(比如全局变量)进行读写的机制。通过将代码分割成一个一个的临界区域(critical section)达成这样的效果。 C++ mutex在C++11中针对并发编程提供了如下的mutex(各有特性): std::mutex std::recursive_mutex std::timed_mutex std::recursive_timed_mutex 且还提供了如下用于辅助的模版类: template class lock_guard; template class...

lambda - 匿名函数

前言​ Github上大量的C++代码运用了lambda表达式,因为之前对该特性的忽略甚至说是误解导致没有认真的深入学习lambda表达式。对代码的学习产生了阻碍。 ​ 本文是对C++ 下 lambda表达式的介绍以及总结 Lambda表达式​ Lambda 函数又称匿名函数,亦即是为没有名字的函数。通常用于封装传递给算法或异步方法的少量代码行。 1234567891011#include <algorithm> #include <cmath> void abssort(float* x, unsigned n) { ...

可变参数模版

前言​ 初接触类模版与函数模版时,虽然感觉这是C++与C对比非常不一样的一个特性。可是也就仅此,固定数量的模版参数,并未让我感觉到这是一项多么酷炫的特性。 ​ 而在C++11中,C++引入了一项新特性。这项特性允许开发者表示0到任意个数、类型的参数。 参考: ​ wiki ​ 基本语法12345678template<typename T> void fucc(T t); //c++03/98 beftemplate<typename... Arguments> void fuc(Arguments... args); //c++11 l...

C++对象内存模型

前言​ 在撰写一般函数指针与类成员函数指针的过程中,我不禁对于C++类的内存分配问题产生了好奇。为何类成员函数指针的赋值为 12class c{public: void hello(){};};void (c::*p)() = &c::hello; ​ 众所周知,在C/C++中,函数实质上为地址。对于类中的函数,为何在对指针赋值时,并不需要关注对象本身,而只是将类中的某个函数地址绑定到成员函数指针上呢? ​ 这是否意味着,在类中 成员函数本身并不占用对象存储空间,而保存于类中。 ​ 图说C++对象模型:对象内存布局详...

函数指针与类成员函数指针的区别

前言​ 在C语言中,曾感受过函数指针的威力。C++也并未摒弃这一强大的开发特性。众所周知,在C++中允许定义类这一种新型的数据类型。那么,在类中定义的函数应当也可以被函数指针所指向并调用。本文就函数指针与类成员函数指针之间的联系与区别展开讨论。 函数指针回顾123456789101112131415void foo1(int a = 1){ std::cout<<"foo1 test: "<<a<<std::endl;}int main(){ foo1(); void (*fooP)(int) = foo1; ...

嵌入式处理器

前言​ 在学习嵌入式开发这门课程之前,我对嵌入式处理器一无所知。甚至认为arm处理器与单片机是差不多的东西。本文通过探讨嵌入式处理器的区别,力求在本文中对嵌入式的世界观进行一个初步的梳理。 嵌入式的定义​ IEEE(Institute of Electrical and Electronics Engineers,美国电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。原文为:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or ...

函数调用的实质-结合栈帧探讨(Stack Frame)

函数调用的实质-结合栈帧探讨(Stack Frame)前言​ 在撰写 函数调用的实质 时,接触到了栈帧的概念。 ​ 为了更好的理解 函数调用的实质,故对该概念也进行了相关的整理。 栈帧是什么​ 众所周知,栈是一种数据结构。其符合FILO(First in last out) 的原则,该原则在计算机世界中十分的常见。因而栈作为一种数据结构被广泛的使用于计算机中。 ​ 在计算机中程序中,调用栈( Call Stack ) 为程序正在使用的栈空间,由多个嵌套函数所使用的栈帧组成。 栈帧( Stack Frame) 即为单个函数所分配的栈空间。 ​ 对于栈帧,计算机...
DiuR21Laonnu
ASP