摘要: Chapter 9 Linked lists 9.1 如果要建立一个并发数据结构,我们当然可以直接拿一个顺序(synchronized action拉满)的实现,然后加满锁(给每一个操作都用同一个对象锁)。但是这就是粗粒度的同步,性能肯定差。 当并发的等级比较低的时候没什么问题,但是线程一多,肯定成 阅读全文
posted @ 2025-06-11 04:00 映空城 阅读(4) 评论(0) 推荐(0)
摘要: 8.1 Introduction monitor能够同步和数据合并,将各种东西封装起来在一个单个的模块 为什么我们需要这玩意儿? mutex.lock(); try { queue.enq(x) } finally { mutex.unlock(); } 这个代码不好。因为 1. 调用者根本不知道是 阅读全文
posted @ 2025-05-29 08:52 映空城 阅读(2) 评论(0) 推荐(0)
摘要: 论文网址: popl05.pdf 一篇有些年头的论文。 ABSTRACT: The new Java model provides a simple interface for correctly synchronized programs– it guarantees sequential con 阅读全文
posted @ 2025-05-08 07:49 映空城 阅读(13) 评论(0) 推荐(0)
摘要: 简介 架构会影响性能。我们这次设计适合今天的多处理器的互斥协议。 1. 反复测试锁称为自旋(spinning)或忙等待(busy-waiting),延迟较短时是合理的 自旋(spinning)仅适用于多处理器,因为在单处理器上,线程自旋会占用 CPU 资源,阻止其他线程运行,导致效率低下。在多处理器 阅读全文
posted @ 2025-05-04 05:46 映空城 阅读(10) 评论(0) 推荐(0)
摘要: 6.1 引言 lock-free的结论与wait-free一致 有一些类型的对象是universal的,给得够多就可以构建出来wait-free的linearizable实现 一个类在n线程的系统是universal <==> 这个类有一个consensus number >=n一个机器架构能有足够 阅读全文
posted @ 2025-04-17 05:49 映空城 阅读(3) 评论(0) 推荐(0)
摘要: 博客链接: Java 内存模型语用学 (transcript) Java Memory Model Pragmatics (transcript) 博客前言 该博客是给想要了解一些底层硬核并发编程的人的,如果只是想要写一些并发程序,可以去读JCIP。 Intro 介绍 Language specs通 阅读全文
posted @ 2025-04-14 08:23 映空城 阅读(8) 评论(0) 推荐(0)
摘要: 前言 本章目的:构造一些原语,希望我们能利用这些原语来解决一些同步问题。 consensus: 一个同步原语的共识数是它能解决共识问题的最大线程数 上面的无法通过下面的synchronization primitives实现出来。 注意,这里的逻辑是,我们制造出来一些同步工具/同步原语,然后利用共识 阅读全文
posted @ 2025-04-13 09:27 映空城 阅读(7) 评论(0) 推荐(0)