Kai`s memo

Readers Writers problem

读者-写者问题 问题描述: 有读者和写者两组并发进程,共享一个文件,当多个读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时,则可能导致数据不一致的错误。因此要求: 允许多个读者同时对文件执行读操作; 只允许一个写者对文件执行写操作; 任何写者在完成写操作前不允许其他读者或写者工作; 写者在执...

Dining Philosophers problem

哲学家就餐问题 题目描述: 有 \(5\) 位哲学家围坐在一张圆桌旁,桌子中央放有一盘通心面,每人面前有一只空盘子,每两人之间放一把叉子;每位哲学家思考、饥饿,然后吃通心面;为了吃面,哲学家必须获得两把叉子,且每人只能从紧邻自己的左边或右边去取叉子。 为了避免 \(5\) 名哲学家同时拿起一边筷子导致死锁,有几种方法: 至多允许 \(4\) 名哲学家同时吃通...

Bounded Buffer (or producer Consumer) problem

生产者-消费者问题 单生产者、单消费者、单缓冲区(经典生产者消费者问题) 题目描述: 一组生产者进程和一组消费者进程共享一个初始为空、大小为 \(n\) 的缓冲区,只有缓冲区没满时,生产者才能把产品放入缓冲区,否则必须等待;只有缓冲区不为空时,消费者才能从中取出产品,否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入产品,或一个消费者从中取出产品。 经典问题,固定...

设计模式知识点总结

设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。 对于每个设计模式要知道:名字、问题(使用场景)、解决方案、效果(优缺点)、示例代码 设计模式的类型有:创建型(用于创建对象)、结构型(用于组织结构)、行为型(用于处理职责和交互),根据处理范围也可以分为类模式和对象模式 重点是简单工厂模式、工厂方法模式、抽象工厂模式、单例...