C++
文章平均质量分 81
一叶飘落尽知秋
这个作者很懒,什么都没留下…
展开
-
lock_guard和unique_lock
锁锁用来在多线程访问同一个资源时防止数据竞险,保证数据的一致性访问。多线程本来就是为了提高效率和响应速度,但锁的使用又限制了多线程的并行执行,这会降低效率,但为了保证数据正确,不得不使用锁,它们就是这样纠缠。主要讨论 c++11 中的两种锁:lock_guard 和 unique_lock。这两种锁都可以对std::mutex进行封装,实现RAII的效果。绝大多数情况下这两种锁是可以互相替代的,区别是unique_lock比lock_guard能提供更多的功能特性(但需要付出性能的一些代价)结合锁进行原创 2022-04-29 22:06:05 · 9401 阅读 · 2 评论 -
C/C++函数调用的几种方式总结
C/C++函数调用的几种方式总结在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结原创 2021-10-07 10:45:29 · 10636 阅读 · 0 评论 -
Linux C/C++编程:likely和unlikely(__builtin_expect)
Linux C/C++编程:likely和unlikely(__builtin_expect)看linux源码或者一些优秀组件的源码,经常碰到likely和unlikely, 其实很简单,无非就是显式告诉编译器怎么去优化。#define likely(x) __builtin_expect((x), 1)#define unlikely(x) __builtin_expect((x), 0)使用if( likely(val)) if( unlikely (val))那么为什么要这样转载 2021-10-06 12:03:32 · 591 阅读 · 0 评论 -
C/C++函数调用方式总结
在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。栈是一种先进后原创 2021-10-06 11:44:14 · 2732 阅读 · 0 评论