摘要: 本系列介绍 Erlang 语言中使用的各种数据类型以及这些数据类型在 Erlang 虚拟机内部的表示和实现。了解数据类型的实现可以帮助大家在实际开发过程中正确选择数据类型,并且可以更好更高效地操作这些数据类型。本文对 Erlang 数据类型及实现的总结目前是最全面的,可以作为 Erlang 数据结构的参考手册。尽管我写的内容都试图在各种参考资料和 Erlang 虚拟机源代码中验证,但是难免会有理解错误或各种低级错误,希望大家指正,也希望能对 Erlang 爱好者们有帮助。第三部分:列表。 阅读全文
posted @ 2013-11-15 00:41 siyao 阅读(4631) 评论(7) 推荐(1) 编辑
摘要: 本系列介绍 Erlang 语言中使用的各种数据类型以及这些数据类型在 Erlang 虚拟机内部的表示和实现。了解数据类型的实现可以帮助大家在实际开发过程中正确选择数据类型,并且可以更好更高效地操作这些数据类型。本文对 Erlang 数据类型及实现的总结目前是最全面的,可以作为 Erlang 数据结构的参考手册。尽管我写的内容都试图在各种参考资料和 Erlang 虚拟机源代码中验证,但是难免会有理解错误或各种低级错误,希望大家指正,也希望能对 Erlang 爱好者们有帮助。第二部分:Eterm 和立即数 阅读全文
posted @ 2013-11-15 00:40 siyao 阅读(5855) 评论(1) 推荐(0) 编辑
摘要: 本系列介绍 Erlang 语言中使用的各种数据类型以及这些数据类型在 Erlang 虚拟机内部的表示和实现。了解数据类型的实现可以帮助大家在实际开发过程中正确选择数据类型,并且可以更好更高效地操作这些数据类型。本文对 Erlang 数据类型及实现的总结目前是最全面的,可以作为 Erlang 数据结构的参考手册。尽管我写的内容都试图在各种参考资料和 Erlang 虚拟机源代码中验证,但是难免会有理解错误或各种低级错误,希望大家指正,也希望能对 Erlang 爱好者们有帮助。第一部分:Erlang 数据类型回顾。 阅读全文
posted @ 2013-11-15 00:38 siyao 阅读(3577) 评论(1) 推荐(0) 编辑
摘要: 本文首先介绍 Erlang 运行时中需要使用无锁队列的场合,然后介绍无锁队列的基本原理及会遇到的问题,接下来介绍 Erlang 运行时中如何通过“线程进度”机制解决无锁队列的问题,并介绍 Erlang 运行时中提供的一个通用无锁队列的实现及其在 ERTS 异步线程池中的应用。 阅读全文
posted @ 2013-10-30 00:08 siyao 阅读(4770) 评论(6) 推荐(3) 编辑
摘要: 一篇从调度原理的角度探讨为什么Erlang能做到低延迟的文章的译文。 阅读全文
posted @ 2013-10-21 20:56 siyao 阅读(14478) 评论(2) 推荐(4) 编辑
摘要: 自旋锁是并发程序中小临界区同步常使用的技术。本文先介绍最简单的自旋锁实现,然后介绍在核心数比较多的多核环境中简单自旋锁的问题,并引入介绍可伸缩的MCS自旋锁。最后在60核的Xeon Phi协处理器上测试了二者的性能。小小自旋锁,也有不少学问哦! 阅读全文
posted @ 2013-10-19 17:35 siyao 阅读(4794) 评论(2) 推荐(1) 编辑
摘要: 这份笔记是我2013年下半年以来读“The Art of Multiprocessor Programming”这本书的读书笔记。作为一本好书,它总结了这个领域自发展以来的大量重要成果,介绍了共享内存同步的基本理论,并介绍了大量并发算法和数据结构(主要是无锁算法),包括并发队列、栈、链表、计数器、排序网络、散列、跳表、优先队列等。我决定用自己的语言把这本书的重要内容复述一遍,其中也加入了自己的一些想法和理解,希望这份笔记能对这本书的其他读者有帮助,也希望能对所有对共享内存同步的朋友们有帮助,这份笔记本身也能作为共享内存式同步的教程,但是笔记本身不能取代原书。由于本人才疏学浅缺乏经验,因此其中必定有不少谬误,望各路大牛批评指正多多交流。 阅读全文
posted @ 2013-10-17 11:02 siyao 阅读(1811) 评论(0) 推荐(0) 编辑
摘要: 线程进度机制是Erts 5.9引入的一项性能改进,是Erlang运行时面向多核处理器的优化措施之一。线程进度机制可以跟踪所有受管的线程的进度,以此判断线程是否完成了某个进度点的执行。Erlang运行时中的系统阻塞功能被新的基于这项机制的系统阻塞功能替代。基于这项机制,Erlang运行时还实现了无锁的同步数据结构,未来Erlang运行时会越来越多地采用无锁数据结构。本文分析了这项机制的基本原理,详细分析了运行时中相关的数据结构和源代码,还分析了全新系统阻塞功能的实现。 阅读全文
posted @ 2013-01-27 00:54 siyao 阅读(4741) 评论(1) 推荐(5) 编辑
摘要: 本文介绍了Erts中使用的读写锁(rwmutex)的原理和实现。在R14B中,Erts的读写锁进行了一次重要的性能更新,本文对这一次更新的优化进行了描述。此外还简单介绍了一下代码中使用的基本模式。 阅读全文
posted @ 2013-01-16 22:43 siyao 阅读(1498) 评论(1) 推荐(0) 编辑
摘要: 本文用较为轻松的方式介绍了几个经典的互斥算法: Dekker 算法、Dijkstra 提出的算法、Peterson 算法和面包店算法,并简单地给出了每一个算法的正确性证明和相关的讨论。 阅读全文
posted @ 2013-01-04 16:47 siyao 阅读(4787) 评论(1) 推荐(1) 编辑