按时间归档:2023年6月8日
-
ucore操作系统学习(六) ucore lab6线程调度器
ucore在lab5中实现了较为完整的进程/线程机制,能够创建和管理位于内核态或用户态的多个线程,让不同的线程通过上下文切换并发的执行,最大化利用CPU硬件资源。ucore在lab…
-
ucore操作系统学习(七) ucore lab7同步互斥
ucore lab7介绍 ucore在前面的实验中实现了进程/线程机制,并在lab6中实现了抢占式的线程调度机制。基于中断的抢占式线程调度机制使得线程在执行的过程中随时可能被操作系…
-
自己动手实现一个阻塞队列
阻塞队列介绍 顾名思义,阻塞队列是一个具备先进先出特性的队列结构,从队列末尾插入数据,从队列头部取出数据。而阻塞队列与普通队列的最大不同在于阻塞队列提供了阻塞式的同步插入、取出数据…
-
AQS学习(一)自旋锁原理介绍(为什么AQS底层使用自旋锁队列?)
1.什么是自旋锁? 自旋锁作为锁的一种,和互斥锁一样也是为了在并发环境下保护共享资源的一种锁机制。在任意时刻,只有一个执行单元能够获得锁。 互斥锁通常利用操作系统提供的线程阻塞/唤…
-
自己动手实现AQS(一) AQS互斥模式与ReentrantLock可重入锁原理解析
MyAQS介绍 在这个系列博客中,我们会参考着jdk的AbstractQueuedLongSynchronizer,从零开始自己动手实现一个AQS(MyAQS)。通过模仿,自己造轮…
-
从零开始实现lmax-Disruptor队列(一)RingBuffer与单生产者、单消费者工作原理解析
1.lmax-Disruptor队列介绍 disruptor是英国著名的金融交易所lmax旗下技术团队开发的一款java实现的高性能内存队列框架其发明disruptor的主要目的是…
-
从零开始实现lmax-Disruptor队列(二)多消费者、消费者组间消费依赖原理解析
在v1版本的MyDisruptor实现单生产者、单消费者功能后。按照计划,v2版本的MyDisruptor需要支持多消费者和允许设置消费者组间的依赖关系。 由于该文属于系列博客的一…
-
从零开始实现lmax-Disruptor队列(三)多线程消费者WorkerPool原理解析
在v2版本的MyDisruptor实现多消费者、消费者组间依赖功能后。按照计划,v3版本的MyDisruptor需要支持多线程消费者的功能。 由于该文属于系列博客的一部分,需要先对…
-
从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
在v3版本的MyDisruptor实现多线程消费者后。按照计划,v4版本的MyDisruptor需要支持线程安全的多线程生产者功能。 由于该文属于系列博客的一部分,需要先对之前的博…
-
从零开始实现lmax-Disruptor队列(五)Disruptor DSL风格API原理解析
在v4版本的MyDisruptor实现多线程生产者后。按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API。 由于该文属于系列博客的一部分,需要先对…