前言 起因是学习 crazyflie 的代码中出现 **__ sync_fetch_and_add ** 这个操作比较好奇,查阅后发现 __sync_fetch_and_add 有一些列的操作函数用于实现原子操作 **fetch **是先返回然后再进行 add 操作 其他同类型的原子操作函数,gcc ...
分类:
其他好文 时间:
2021-06-16 18:05:50
阅读次数:
0
目的:让一个驱动程序在同一时刻只能被一个进程使用。 方法:可以用原子操作也可以用信号量,用信号量的话还涉及到阻塞方式和非阻塞方式。 1. 原子操作原子操作指的是在执行过程中不会被别的代码路径所中断的操作。常用原子操作函数举例:atomic_t v = ATOMIC_INIT(0); //定义原子变量 ...
分类:
其他好文 时间:
2021-06-03 17:46:21
阅读次数:
0
#引言 原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。通常所说的原子操作包括对非long和double型的primitive进行赋值,以及返回这两者之外的primitive。之所以要把它们排除在外是因 ...
分类:
编程语言 时间:
2021-05-24 16:35:44
阅读次数:
0
🐉 大致介绍 本章讲解一下CAS,本质就是机器指令:cmpxchg+lock(根据处理器核数进行判断) 原子操作; 而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sync(同步器)的内部类继承AQS而实现出五花八门的功能; 🐉 简单认识AQS 🐉 何为AQS? ...
分类:
编程语言 时间:
2021-05-24 14:01:29
阅读次数:
0
synchronized 是不是能够代替原子操作?不能, 因为synchronized方法在执行的过程当中,它方法体内的变量可以被其他非synchronized方法得到。而 如果用原子操作,其他方法就看不到了。这点区别就造成了,如果有需求要求synchronized方法体内的变量不能被其他方法看到, ...
分类:
编程语言 时间:
2021-05-24 05:07:04
阅读次数:
0
线程安全 定义:多个线程同时运行这段代码。如果每次运行结果和单线程运行结果是一样的,而且其他变量的值也和预期的是一样的,就是线程安全的。或者说,一个类或者程序所提供的接口对于线程来说是原子操作,多个线程间的切换不会导致执行结果存在二义性,也就是不用考虑同步的问题。线程安全策略就是多线程访问时,采用加 ...
分类:
编程语言 时间:
2021-05-24 04:41:53
阅读次数:
0
什么叫原子操作? 就 是无法被别的线程打断的操作。要么不执行,要么就执行成功。例如:x=3是原子操作。过程就是先把工作内存的x赋成3,再把主存的x赋成3。y=x不是原 子操作,它涉及在工作内存先把x值读出来,再把这个值赋给y。x++或x=x+1也不是原子操作,它涉及取值,自加和赋值。下面我们就用一个 ...
分类:
编程语言 时间:
2021-05-24 04:04:33
阅读次数:
0
1. ConcurrentHashMap源码分析(JDK1.7) 1.1 Unsafe介绍 1.1.1 Unsafe简介 Unsafe类相当于是一个java语言中的后门类,提供了硬件级别的原子操作,所以在一些并发编程中被大量使用。jdk已经作出说明,该类对程序员而言不是一个安全操作,在后续的jdk升 ...
分类:
其他好文 时间:
2021-03-15 10:33:46
阅读次数:
0
一、事务 事务是由一组SQL语句组成的逻辑处理单元,是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。事务具有以下4个属性,通常简称为事务的ACID属性: 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行 ...
分类:
数据库 时间:
2021-03-03 12:25:17
阅读次数:
0
WEB 如果你有更好的想法请在评论区留下您的答案,一起交流讨论 http和https有什么区别? 答:http是超文本传输协议,默认端口是80。https是安全的默认端口是443;http是明文传输,存在安全隐患,Https在Http的基础上增加了SSL/TLS协议,需要依靠整数来验证服务器身份,并 ...
分类:
编程语言 时间:
2021-02-18 13:12:49
阅读次数:
0