原文:https://github.com/angrave/SystemProgramming/wiki/Synchronization-Concepts%3A-Review-Questions
注意线程编程同步问题在单独的 Wiki 页面上。本页重点介绍概念主题。问题编号可能会有变化
每个科夫曼条件意味着什么? (例如,你能提供每个的定义)
- 等等
- 循环等待
- 没有先发制人
- 相互排斥
给出一个真实的例子,依次打破每个 Coffman 条件。需要考虑的情况:画家,油漆和油漆刷。等待和等待循环等待没有先发制人相互排斥
识别用餐哲学家代码何时导致死锁(或不)。例如,如果您看到以下代码片段不满足 Coffman 条件?
// Get both locks or none.
pthread_mutex_lock( a );
if( pthread_mutex_trylock( b ) ) { /*failed*/
pthread_mutex_unlock( a );
...
}
有多少进程被阻止?
- P1 获得 R1
- P2 获得 R2
- P1 收购 R3
- P2 等待 R3
- P3 收购 R5
- P1 收购 R4
- P3 等待 R1
- P4 等待 R5
- P5 等待 R1
对于读写器问题,下列陈述中有多少是正确的?
- 可以有多个活跃的读者
- 可以有多个活动作者
- 当有活动的写入器时,活动读取器的数量必须为零
- 如果有活动的阅读器,则活动写入器的数量必须为零
- 作者必须等到当前活跃的读者完成