Skip to content

Commit 317c3c0

Browse files
authored
lec12-p1
1 parent 32d6e32 commit 317c3c0

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

lec12/p1-syncmutex.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ backgroundColor: white
107107

108108
---
109109

110-
##### 方案一
110+
##### 方案一:先检查,后留便签
111111
- 使用便签来避免购买太多面包
112112
- 购买之前留下一张便签
113113
- 买完后移除该便签
@@ -139,7 +139,7 @@ backgroundColor: white
139139

140140
---
141141

142-
##### 方案二
142+
##### 方案二:先留便签,后检查
143143
- 先留便签,后查面包和便签
144144
```
145145
leave Note;
@@ -158,7 +158,7 @@ remove note;
158158

159159
---
160160

161-
##### 方案三
161+
##### 方案三:先留不同便签,后检查
162162
- 为便签增加标记,以区别不同人的便签
163163
- 现在可在检查之前留便签
164164
```
@@ -172,11 +172,11 @@ if (no note_1) {
172172
remove note_2;
173173
```
174174

175-
![bg right:50% 100%](figs/method-3.png)
175+
![bg right:49% 100%](figs/method-3.png)
176176

177177
---
178178

179-
##### 方案三
179+
##### 方案三:先留不同便签,后检查
180180
- 为便签增加标记,以区别不同人的便签
181181
- 现在可在检查之前留便签
182182
```
@@ -189,7 +189,7 @@ if (no note_2) {
189189
}
190190
remove note_1;
191191
```
192-
![bg right:50% 100%](figs/method-3.png)
192+
![bg right:49% 100%](figs/method-3.png)
193193

194194
---
195195

@@ -204,7 +204,7 @@ remove note_1;
204204

205205
---
206206

207-
##### 方案四
207+
##### 方案四:采用不同流程
208208
两个人采用不同的处理流程
209209

210210
![w:1000](figs/method-4.png)
@@ -224,7 +224,7 @@ remove note_1;
224224

225225
---
226226

227-
##### 方案五
227+
##### 方案五:采用原子操作
228228
- 利用两个原子操作实现一个锁(lock)
229229
- Lock.Acquire()
230230
- 在锁被释放前一直等待,然后获得锁
@@ -419,8 +419,8 @@ exit section
419419

420420
---
421421

422-
##### 尝试一 根据turn值进入临界区
423-
![bg right:50% 100%](figs/soft-1.png)
422+
##### 尝试一根据turn值进入临界区
423+
![bg right:49% 100%](figs/soft-1.png)
424424
- 满足“忙则等待”,但是有时不满足“空闲则入”
425425
```c
426426
// 线程 Tj
@@ -436,7 +436,7 @@ do {
436436

437437
---
438438

439-
##### 尝试一 根据turn值进入临界区
439+
##### 尝试一根据turn值进入临界区
440440
![bg right:50% 100%](figs/soft-1.png)
441441
- 满足“忙则等待”,但是有时不满足“空闲则入”
442442
- Ti不在临界区,Tj想要继续运行,但是必须等待Ti进入过临界区后
@@ -447,7 +447,7 @@ do {
447447

448448
---
449449

450-
##### 尝试二 根据flag进入临界区
450+
##### 尝试二根据flag进入临界区
451451
![bg right:50% 100%](figs/soft-2.png)
452452
- 互相依赖(线程忙等)
453453
- 不满足“忙则等待”
@@ -466,7 +466,7 @@ do {
466466

467467
---
468468

469-
##### 尝试三 根据flag进入临界区
469+
##### 尝试三根据flag进入临界区
470470
![bg right:50% 100%](figs/soft-3.png)
471471
- 满足“忙则等待”,但是不满足“空闲则入”
472472
- flag[i]=flag[j]=1

0 commit comments

Comments
 (0)