我喜欢LWN的文章,我想了解更多关于崩溃安全和容错编程的知识。
令人惊讶的是,很难确保持久状态在故障情况下是一致的。在这里,我甚至不讨论分布式操作:这在单个节点上也很困难:如果系统崩溃,即使是普通的Berkeley DB (BDB Data Store或BDB Concurrent Data Store)也可能有一个被破坏的数据库。不仅高级应用程序约束被破坏,而且如果系统崩溃,数据库可能无法正确打开。
关于崩溃安全和容错设计、方法和编程,有哪些好的资源。
如果资源集中在C++和POSIX环境上,我将不胜感激。
如果我有一种具有一流函数的编程语言。当一个生成器函数被共享时,语义应该是什么?
例如:
var f = function() {
foreach (i in 0..42)
yield i;
}
int a = f(); // 0
int b = f(); // 1
// Assigning the generator function
var g = f;
int c = g(); // ??
int d = f(); // ??
我可以想象三件事:
c == 2,d == 3表示生成器函数共享c == 0,d == 2表示创建了新的生成器函数,值初始化为c == 2,
我在互联网上找到了这个for循环,从那时起,我一直试图找出哪些语言使用它,以了解它是如何工作的,并将其转换为C++。
for m from 0 by 1 to n do
A[m] ← 1/(m+1)
for j from m by -1 to 1 do
A[j-1] ← j×(A[j-1] - A[j])
return A[0] (which is B_n)
编辑:我只是好奇,因为我还在学习编程之类的东西