内存顺序 内存顺序描述了计算机 CPU 获取内存的顺序,内存的排序既可能发生在编译器编译期间,也可能发生在 CPU 指令执行期间。 为了尽可能地提高计算机资源利用率和性能,编译器会对代码进行重新排序, CPU 会对指令进行重新排序、延缓执行、各种缓存等等,以达到更好的执行效果。当然任何排序都不能违背 ...
分类:
其他好文 时间:
2020-06-27 17:28:52
阅读次数:
86
所谓lock-free和wait-free算法是指对于共享的数据并非对其加锁来控制访问,而是多个线程并行的访问。通过该算法可以达到对共享对象并发的读写而不会破坏对象本身。所谓lock-free是指对于线程不加锁,让系统执行所有的步骤。lock-free提到的不加锁是指不使用类似于互斥锁或者信号量之类 ...
分类:
其他好文 时间:
2020-06-19 14:21:43
阅读次数:
61
在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如 ...
分类:
其他好文 时间:
2020-04-05 18:11:26
阅读次数:
67
在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如 ...
分类:
其他好文 时间:
2020-01-10 18:43:03
阅读次数:
69
这三个都是自 JDK1.5 开始加入到 java.util.concurrent.atomic 下面的。他们都可以在 lock-free 的情况下以原子的方式更新对象引用。 一、AtomicReference 以原子方式更新对象引用。 二、AtomicStampedReference 解决了 Ato ...
分类:
其他好文 时间:
2019-09-22 13:08:48
阅读次数:
94
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。 悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数 ...
分类:
其他好文 时间:
2019-05-19 23:19:11
阅读次数:
155
悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的
分类:
其他好文 时间:
2019-04-27 00:21:11
阅读次数:
186
论文地址:implementing Lock-Free Queue 论文大体讲的意思是:Lock-Base的程序的performance不好,并且a process inside the critical section can delay all operations indenitely;所以 ...
分类:
其他好文 时间:
2019-04-14 15:53:19
阅读次数:
131
在运用CAS做Lock-Free操作中有一个经典的ABA问题: 线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如 ...
分类:
其他好文 时间:
2019-03-05 09:46:36
阅读次数:
147
新闻爬虫系统架构: Zookeeper master:发布爬取任务 监控爬虫子节点存活性 宕机时重启 Kafka:分布式消费队列 Ip-pool:动态更换Ip 反防爬 Extraction service:抽取规则服务器 disruptor:lock free用于快速消费任务 ...
分类:
其他好文 时间:
2019-02-04 14:04:07
阅读次数:
239