Skip to content

Files

Latest commit

8284d54 · Jul 11, 2019

History

History
55 lines (39 loc) · 1.38 KB

85.md

File metadata and controls

55 lines (39 loc) · 1.38 KB

同步概念:复习题

原文:https://github.com/angrave/SystemProgramming/wiki/Synchronization-Concepts%3A-Review-Questions

注意线程编程同步问题在单独的 Wiki 页面上。本页重点介绍概念主题。问题编号可能会有变化

Q1

每个科夫曼条件意味着什么? (例如,你能提供每个的定义)

  • 等等
  • 循环等待
  • 没有先发制人
  • 相互排斥

Q2

给出一个真实的例子,依次打破每个 Coffman 条件。需要考虑的情况:画家,油漆和油漆刷。等待和等待循环等待没有先发制人相互排斥

Q3

识别用餐哲学家代码何时导致死锁(或不)。例如,如果您看到以下代码片段不满足 Coffman 条件?

// Get both locks or none.
pthread_mutex_lock( a );
if( pthread_mutex_trylock( b ) ) { /*failed*/
   pthread_mutex_unlock( a );
   ...
} 

Q4

有多少进程被阻止?

  • P1 获得 R1
  • P2 获得 R2
  • P1 收购 R3
  • P2 等待 R3
  • P3 收购 R5
  • P1 收购 R4
  • P3 等待 R1
  • P4 等待 R5
  • P5 等待 R1

Q5

对于读写器问题,下列陈述中有多少是正确的?

  • 可以有多个活跃的读者
  • 可以有多个活动作者
  • 当有活动的写入器时,活动读取器的数量必须为零
  • 如果有活动的阅读器,则活动写入器的数量必须为零
  • 作者必须等到当前活跃的读者完成