本文记录日文学习过程中整理的语法。
本篇总结学习了1978年Leslie Lamport发表在 Communications of the ACM 上的论文 Time, Clocks, and the Ordering of Events in a Distributed System。论文对分布式系统中的时间,时钟等概念做了深入的讨论,提出了“Happened Before”,“逻辑时钟”,“物理时钟”,“State Machine”等重要概念与算法,是分布式领域不能不读的经典论文。
在之前的文章libco源码笔记(2)显示切换中,我们介绍了libco提供的显示协程切换接口,并讨论了协程池的使用。本文讨论libco提供的自动切换相关函数接口。建议配合我自己的注释版本阅读本文。
在之前的文章libco源码笔记(1)协程与上下文切换中,我们介绍了协程的基本概念以及libco中的上下文切换核心代码。本文libco提供的显式切换相关函数接口,与此相对的通过hook系统调用提供的自动切换机制在后续文章中介绍。建议配合我自己的注释版本阅读本文。
本文结合微信高性能开源协程库libco,总结了协程相关的问题与解决方案。libco源码注释不多,这里附上我自己的注释版本,建议配合阅读。此外,文中的代码及解释均运行于x86-32位下,64位下的情况略有不同,篇幅有限不再赘述。
在之前的文章中提到过Dijkstra于1965年提出的基于共享存储的临界区互斥访问问题。Dijkstra提出了基于对内存单元的原子性读写实现的方案。 然而,Lamport指出Dijkstra的方案会因为节点在临界区内失效而导致系统死锁。在其于1974年发表的文章A New Solution of Dijkstra’s Concurrent Programming Problem中,Lamport提出了完全基于软件实现的解决方案,被称为“面包店算法”。
Edsger W. Dijkstra于1965年发表文章Solution of a Problem in Concurrent Programming Control,引出并发系统下的互斥(mutual exclusion)问题,自此开辟了分布式计算领域。Dijkstra在文中给出了基于共享存储原子性访问的解决方案只有十多行代码,但阅读起来较难以理解。在查阅若干资料后,总结了一种较为直观的解释方法,记录于此。
c++自1985年发行以来,以其高效、灵活的特性成为最成功的高级编程语言之一。2011年,距离上一个c++标准c++03发布的8年后,c++委员会吸取了现代编程语言的若干特性,发布了新的c++11标准,使得古朴的c++得以跻身现代编程语言的行列。本文挑选了部分c++11引入的新特性进行说明,阐述其缘由,使用以及注意事项。如果你需要查看完整特性与编译器支持请参考这里$^{[1]}$。
玩过类似魔兽世界这种网游的朋友,应该都有组团刷副本的经历。然而有些时候我们会发现,虽然加了很多游戏好友,但自己想刷副本时经常会缺“奶”,缺“T”。能不能根据玩家在线的时间段偏好推荐相似的好友呢?