
多线程
想躺平的不倒翁
做不一样的自己
展开
-
C++原子操作atomic库介绍
原子操作如名字所述,其操作是不可分割的操作。在多线程中,原子操作因不可分割性,对认识数据同步有这重要的作用,而且原子操作可以使用互斥锁进行模拟。标准原子类型定义在<atomic>头文件中,或许c++标志库中原子库的实现就是通过互斥锁模拟的,我们可以通过其方法is_lock_free()检测是否该类型内部是通过使用锁模拟的,若返回false则表示该原子类型是库或是编译器内部使用一个锁实现...原创 2019-07-20 17:20:51 · 1192 阅读 · 0 评论 -
C++多线程内存模型
文中图片摘自《c++ concurrency in action》用于自我学习,存在不足,还请指正。内存模型基础在C/C++中,无论是常规的整型变量,还是结构体或是C++中的类,在计算机中都是在一定的内存位置进行存储的。而这个内存位置是在初始化就已经确定好,不同的内存位置,那么程序访问变量的顺序也有就不同。同样,在多线程程序中,如果程序的执行顺序不同,那么结果就有所区别。因此多线程程序中,原子...原创 2019-07-21 11:26:18 · 1248 阅读 · 0 评论 -
C++并发数据结构的内存回收
简介最近学习《CPP concurrency in action》的一些总结,文中的图片与程序皆是引用于该书。*数据结构并发编程中,内存回收一直是一个头疼的问题。下面简单介绍使用引用计数的方式,进行内存回收。背景:以最简单的数据结构——栈为例,进行在设计无锁的线程安全栈结构时,借助的是原子操作和内存顺序特性实现。栈结构设计,其本质就是对结点node指针进行操作,push()操作只有内存分配...原创 2019-07-22 20:15:26 · 719 阅读 · 0 评论