dm_vincent的专栏

后端工程师,前端技术爱好者。

CLH锁的原理和实现

前情回顾 上一篇文章中主要讨论了MCS自旋锁的特点和其适用场景,并分析了其原理和实现细节。 MCS锁存在的问题 MCS锁解决了简单自旋锁的一个最大痛点:频繁地缓存同步操作会导致繁重的系统总线和内存的流量,从而大大降低了系统整体的性能。 解决这个问题的思路是将自旋操作限制在一个本地变量上...

2018-04-07 16:12:17

阅读数 1786

评论数 3

MCS锁的原理和实现

前情回顾 上一篇文章中主要讨论了自旋锁的特点和其适用场景,然后给出了两种自旋锁的简单实现。 存在的问题 无论是简单的非公平自旋锁还是公平的基于排队的自旋锁,由于执行线程均在同一个共享变量上自旋,申请和释放锁的时候必须对该共享变量进行修改,这将导致所有参与排队自旋锁操作的处理器的缓存变得无...

2018-04-01 22:51:47

阅读数 828

评论数 0

简单的非公平自旋锁以及基于排队的公平自旋锁的实现

基础 什么是自旋锁 由于本文主要讨论的都是自旋锁,所以首先就需要弄明白什么是自旋锁。 自旋锁最大的特征,就是它会一直循环检测锁的状态,当锁处于被占用的状态时,不会将当前线程阻塞住,而是任由它继续消耗CPU Cycles,直到发现需要的锁处于可用状态。 有了这一层了解,自旋锁的优势和劣势...

2018-03-24 14:47:52

阅读数 447

评论数 0

为什么volatile++不是原子性的?

问题 在讨论原子性操作时,我们经常会听到一个说法:任意单个volatile变量的读写具有原子性,但是volatile++这种操作除外。 所以问题就是:为什么volatile++不是原子性的? 答案 因为它实际上是三个操作组成的一个符合操作。 首先获取volatile变量的值 将该变...

2018-03-18 21:23:19

阅读数 3572

评论数 1

[AOP] 4. Spring AOP中提供的种种Aspects - 异步执行

上一篇文章介绍了Spring AOP中提供的种种与Tracing相关的Aspects,还剩两个Aspects没有讨论: AsyncExecutionInterceptor ConcurrencyThrottleInterceptor 本文继续探讨和异步与并发相关一个Aspect,也是使用的比较普遍...

2017-03-19 15:52:39

阅读数 5176

评论数 0

[Java 并发] Java并发编程实践 思维导图 - 第六章 任务执行

根据《Java并发编程实践》一书整理的思维导图。希望能够有所帮助。 第一部分: 第二部分: 第三部分:

2014-11-28 09:08:29

阅读数 4224

评论数 0

[Java 并发] Java并发编程实践 思维导图 - 第五章 基础构建模块

根据《Java并发编程实践》一书整理的思维导图。希望能够有所帮助。

2014-11-23 10:01:20

阅读数 3946

评论数 0

[Java 并发] Java并发编程实践 思维导图 - 第四章 对象的组合

[Java 并发] Java并发编程实践 思维导图 - 第四章 对象的组合。 整理的思维导图,希望对大家有所帮助。

2014-11-16 09:53:12

阅读数 4436

评论数 0

Effective JavaScript Item 63 注意异步调用中可能会被忽略的异常

异常处理是异步编程的一个难点。在同步的代码中,异常能够很容易地通过try catch语句来完成: try { f(); g(); h(); } catch (e) { // handle any error that occurred... } 但是...

2014-11-16 09:22:36

阅读数 3439

评论数 0

Effective JavaScript Item 62 在异步调用中使用嵌套或者命名的回调函数

在一开始,理解异步程序的调用顺序会有些困难。比如,下面的程序中,starting会先被打印出来,然后才是finished: downloadAsync("file.txt", function(file) { console.log("finished&...

2014-11-15 09:40:31

阅读数 3627

评论数 0

Effective JavaScript Item 61 不要阻塞事件队列

JavaScript处理并发事件的机制是十分友好和强大的,它结合了事件队列(Event Queue)/事件循环并发(Event-loop Concurrency)和一套异步调用API。这因为这一点,JavaScript不仅可以在浏览器环境中运行,还可以在桌面应用和服务器应用中运行,如Node.js...

2014-11-14 12:32:12

阅读数 3524

评论数 0

[Java 并发] Java并发编程实践 思维导图 - 第三章 对象的共享

根据《Java并发编程实践》一书整理的思维导图。

2014-11-13 10:11:22

阅读数 4494

评论数 1

[Java 并发] Java并发编程实践 思维导图 - 第二章 线程安全性

根据《Java并发编程实践》一书整理的思维导图。

2014-11-09 11:25:08

阅读数 4231

评论数 0

[Java 并发] Java并发编程实践 思维导图 - 第一章 简介

根据《Java并发编程实践》一书

2014-11-08 10:08:27

阅读数 4483

评论数 1

提示
确定要删除当前文章?
取消 删除