
C++进阶
文章平均质量分 60
响箭零零一
这个作者很懒,什么都没留下…
展开
-
多线程操作与安全
1 互斥锁 mutex:当遇到锁被占用,会进行cpu切换,等锁可以用后再切换回来。 使用场景: (1)操作复杂耗时、有系统调用,采用互斥锁。 2 自旋锁 spinlock:当遇到锁被占用,不会让出cpu,空转等待。 使用场景: (1)临界资源操作简单时间短,没有系统调用,采用自旋锁。 3 原子操作 变成一条cpu指令: 使用场景: 需要cpu的指令集支持 CAS:compare and swap if(a == b) { cmpxchg(a, b, c); a = c; } 4 线程私有空间 pthr原创 2021-12-15 21:10:03 · 3375 阅读 · 0 评论 -
makefile基础篇
makefile: 目标,依赖、命令 makefile报错,需要用tab键,而不是空格 先执行依赖,再执行目标 项目中需要对可能存在的对象,需要指定伪对象 #目标:依赖 .PHONY: test CC = gcc #依赖关系是从左到右 OBJS = main.o foo.o all:test #命令 @echo "hello all" test: @echo "hello all" 2 自动推倒 $@:目标 $^:所有先决条件 $<:第一个先决条件 .PHONY: clean CC = g原创 2021-11-01 20:44:55 · 255 阅读 · 0 评论 -
Cmake基础篇
编译安装 基本语法 参考文档:https://www.yuque.com/docs/share/d66b3695-cd45-43ca-bb3f-87f51ae589a6?# ;《CMake实战》 关键字不区分大小写 #最小版本约定 cmake_minimum_required #工程名称:不是执行文件名 PROJECT(projectname [CXX] [C] [Java]) #设置变量 SET(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]) #消息打印 MESS原创 2021-11-01 20:36:35 · 549 阅读 · 0 评论 -
C++进阶之一
1 线程 std::thread 注意点: 线程退出,采用join时需要利用:joinable()进行判断当前线程是否安全。 线程如果采用detach(),线程将分离,join将无法捕获,线程将独立自动退出。 2 锁 std::mutex 注意点: 独占的互斥量,不能递归使用。 不建议使用mutex直接锁,主要是释放锁容易遗忘造成死锁 建议使用:lock_guard或者unique_lock上锁 注意点: 这个锁构造创建,析构释放,栈上锁可以自动释放 unique_lock可以进行临时解锁和再上锁原创 2021-10-29 21:02:57 · 137 阅读 · 0 评论