# 同步概念：复习题

> 原文：<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

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

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