一篇快速复习C语言语法的小文。
再谈阻塞(3):cxq、EntryList与WaitSet
通过上一篇的分析,我们知道当一个线程尝试获取monitor锁失败后,最终会被封装成一个ObjectWaiter对象,放入一个以_cxq为头节点的队列中,这个队列通过一个简单链表实现。每当有新来的节点入队,它的next指针总是指向之前队列的头节点,而_cxq指针会指向该新入队的节点,这就是后来者当头
。实际上synchronized锁机制内维护了三个队列,除了cxq,还包括EntryList与WaitSet,本篇将以此为研究对象,弄清内置锁队列的运作机制。
FL Studio 12.0.2 Mac版本开箱指南
Image-Line正式开发原生非移植版FL Studio for Mac三年多,期间Cakewalk就放弃了把SONAR移植到Mac,可见任务的艰难,最终在上半年,FL Studio 20 for Mac正式版终于推出,实在可喜可贺,特别是对中国的玩家,毕竟国内拥有大量的水果用户。但本篇将开箱的是一款FL Studio在Mac平台上的移植版本
,供折腾、学习和研究所用。
再谈阻塞(2):获取重量级锁从尝试到失败
本篇将从源码角度,了解竞争重量级锁失败的过程,解释了为什么t2启动后,立马调用getState方法,会显示处于RUNNABLE状态,也说明了在Java线程中的Blocked状态并非是完全挂起状态,入队_cxq前后都可能进行TryLock()和自旋。
Scala入门,以Java程序员的视角(二):first-class函数
《Scala学习手册》中文版将first-class翻译成首类,在这里不过多纠结这个翻译。实际上first-class表明了函数在函数式编程中的地位,它属于第一公民!