背景 最近在很多JDK源码中都看到了Treiber stack这个单词。 比如CompletableFuture中的: volatile Completion stack; // Top of Treiber stack of dependent actions 比如FutureTask中的: /* ...
分类:
其他好文 时间:
2020-07-03 00:37:03
阅读次数:
81
尽管 Golang 推荐通过 channel 进行通信和同步,但在实际开发中 sync 包用得也非常的多。另外 sync 下还有一个 atomic 包,提供了一些底层的原子操作(这里不做介绍)。本篇文章主要介绍该包下的锁的一些概念及使用方法。 整个包都围绕这 Locker 进行,这是一个 inter ...
分类:
其他好文 时间:
2020-07-02 13:44:18
阅读次数:
47
线程同步 同步:同步控制着线程之间的执行顺序,不让他们抢占式执行。在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。 原子访问:同一时刻,只允许一个线程访问临界资源; 原子操作:指多步操作组成的一个操作;原子操作中线程不会被切换,线程切换要么在原子操作 ...
分类:
编程语言 时间:
2020-06-29 09:53:49
阅读次数:
69
1. 概念 原子操作是指不被打断的操作,即它是最小的执行单位。最简单的原子操作就是一条条的汇编指令(不包括一些伪指令,伪指令会被汇编器解释成多条汇编指令)。在 linux 中原子操作对应的数据结构为 atomic_t,定义如下: typedef struct { int counter; } ato ...
分类:
其他好文 时间:
2020-06-24 19:57:50
阅读次数:
57
Transactional失效的场景 一:spring的事务管理 讲解Transactional之前先来聊聊spring的事务。 1:什么是事务? 答:事务是一组操作,这组操作要么全部完成,要么全部失败。 2:事务的特性? 答:ACID四种 原子性 (Atomicity) : 事务是一个原子操作,由 ...
分类:
其他好文 时间:
2020-06-22 01:36:28
阅读次数:
45
#进程控制 进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 ##如何实现进程控制? 用原语实现进程控制。原语的特点是执行期间不允许中断,只能一气呵成。 这种不可被中断的操作即原子操作。 原语采用“关中断指令”和“开中断指令”实现. 学习 ...
分类:
系统相关 时间:
2020-06-22 01:20:06
阅读次数:
83
知乎用户ljgibbs授权转发 本系列我想深入探寻 AXI4 总线。不过事情总是这样,不能我说想深入就深入。当前我对 AXI总线的理解尚谈不上深入。但我希望通过一系列文章,让读者能和我一起深入探寻 AXI4。 声明1:部分时序图以及部分语句来自 ARM AMBA 官方手册 (有的时候感觉手册写得太好 ...
分类:
其他好文 时间:
2020-06-21 23:11:32
阅读次数:
60
前言 最近看到有不少粉丝私信我说,能不能给整理出一份面试的要点出来,说自己复习的时候思绪很乱,老是找不到重点。那么今天就先给大家分享一个面试几乎必问的点,并发!在面试中问的频率很高的一个是分布式,一个就是并发,具体干货都在下方了。 面试环节 1. 面试官:你先说下你对synchronized的了解。 ...
分类:
其他好文 时间:
2020-06-21 15:44:26
阅读次数:
48
原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。 处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。 在 Java 中可以通过锁和循环 CAS 的方式来实现原子操作。 CAS 操作—— Compare & Set,或是 Compare & Sw ...
分类:
编程语言 时间:
2020-06-21 15:42:56
阅读次数:
65
1. 聚集法介绍 将整体操作划分成单个的原子操作,用求和的方法计算 总代价 和 平摊代价 注意:求和时运用好整体操作的规律 【栈操作】 问题定义:对初始为空的栈进行 push,pop 和 multipop三种操作 规律: 调用次数满足 pop + multipop <= push , 代价关系满足 ...
分类:
其他好文 时间:
2020-06-21 15:31:08
阅读次数:
49