闭卷重建并发交错与数据竞争的对象、状态、事件、不变量与一个失败反例。
程序设计 II:抽象、内存与并发 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷重建互斥锁与临界区的对象、状态、事件、不变量与一个失败反例。
闭卷重建条件变量与等待谓词的对象、状态、事件、不变量与一个失败反例。
闭卷重建信号量、屏障与容量的对象、状态、事件、不变量与一个失败反例。
闭卷重建死锁条件、锁顺序与检测的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:加锁并行求和的对象、状态、事件、不变量与一个失败反例。
闭卷重建实验:屏障阶段汇合的对象、状态、事件、不变量与一个失败反例。
核心机制:互斥锁与临界区必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕互斥锁与临界区先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:互斥锁与临界区不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:并发交错与数据竞争必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕并发交错与数据竞争先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:并发交错与数据竞争不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:信号量、屏障与容量必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕信号量、屏障与容量先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:信号量、屏障与容量不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:条件变量与等待谓词必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕条件变量与等待谓词先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:条件变量与等待谓词不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:实验:加锁并行求和必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕实验:加锁并行求和先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:实验:加锁并行求和不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:死锁条件、锁顺序与检测必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕死锁条件、锁顺序与检测先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:死锁条件、锁顺序与检测不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。
核心机制:实验:屏障阶段汇合必须声明公开接口、隐藏状态、所有权或资源责任、允许的并发交错、失败后的不变量以及可替换实现;实验入口:围绕实验:屏障阶段汇合先画对象与资源关系,再运行正常、边界、失败和确定性交错四组实验,保存状态轨迹;边界:实验:屏障阶段汇合不能靠全局可变状态、无限重试或偶然调度正确;别名、清理、取消、锁顺序和性能退化必须显式处理。