File tree 1 file changed +13
-13
lines changed
1 file changed +13
-13
lines changed Original file line number Diff line number Diff line change @@ -107,7 +107,7 @@ backgroundColor: white
107
107
108
108
---
109
109
110
- ##### 方案一
110
+ ##### 方案一:先检查,后留便签
111
111
- 使用便签来避免购买太多面包
112
112
- 购买之前留下一张便签
113
113
- 买完后移除该便签
@@ -139,7 +139,7 @@ backgroundColor: white
139
139
140
140
---
141
141
142
- ##### 方案二
142
+ ##### 方案二:先留便签,后检查
143
143
- 先留便签,后查面包和便签
144
144
```
145
145
leave Note;
@@ -158,7 +158,7 @@ remove note;
158
158
159
159
---
160
160
161
- ##### 方案三
161
+ ##### 方案三:先留不同便签,后检查
162
162
- 为便签增加标记,以区别不同人的便签
163
163
- 现在可在检查之前留便签
164
164
```
@@ -172,11 +172,11 @@ if (no note_1) {
172
172
remove note_2;
173
173
```
174
174
175
- ![ bg right:50 % 100%] ( figs/method-3.png )
175
+ ![ bg right:49 % 100%] ( figs/method-3.png )
176
176
177
177
---
178
178
179
- ##### 方案三
179
+ ##### 方案三:先留不同便签,后检查
180
180
- 为便签增加标记,以区别不同人的便签
181
181
- 现在可在检查之前留便签
182
182
```
@@ -189,7 +189,7 @@ if (no note_2) {
189
189
}
190
190
remove note_1;
191
191
```
192
- ![ bg right:50 % 100%] ( figs/method-3.png )
192
+ ![ bg right:49 % 100%] ( figs/method-3.png )
193
193
194
194
---
195
195
@@ -204,7 +204,7 @@ remove note_1;
204
204
205
205
---
206
206
207
- ##### 方案四
207
+ ##### 方案四:采用不同流程
208
208
两个人采用不同的处理流程
209
209
210
210
![ w:1000] ( figs/method-4.png )
@@ -224,7 +224,7 @@ remove note_1;
224
224
225
225
---
226
226
227
- ##### 方案五
227
+ ##### 方案五:采用原子操作
228
228
- 利用两个原子操作实现一个锁(lock)
229
229
- Lock.Acquire()
230
230
- 在锁被释放前一直等待,然后获得锁
@@ -419,8 +419,8 @@ exit section
419
419
420
420
---
421
421
422
- ##### 尝试一 根据turn值进入临界区
423
- ![ bg right:50 % 100%] ( figs/soft-1.png )
422
+ ##### 尝试一: 根据turn值进入临界区
423
+ ![ bg right:49 % 100%] ( figs/soft-1.png )
424
424
- 满足“忙则等待”,但是有时不满足“空闲则入”
425
425
``` c
426
426
// 线程 Tj
436
436
437
437
---
438
438
439
- ##### 尝试一 根据turn值进入临界区
439
+ ##### 尝试一: 根据turn值进入临界区
440
440
![ bg right:50% 100%] ( figs/soft-1.png )
441
441
- 满足“忙则等待”,但是有时不满足“空闲则入”
442
442
- Ti不在临界区,Tj想要继续运行,但是必须等待Ti进入过临界区后
447
447
448
448
---
449
449
450
- ##### 尝试二 根据flag进入临界区
450
+ ##### 尝试二: 根据flag进入临界区
451
451
![ bg right:50% 100%] ( figs/soft-2.png )
452
452
- 互相依赖(线程忙等)
453
453
- 不满足“忙则等待”
466
466
467
467
---
468
468
469
- ##### 尝试三 根据flag进入临界区
469
+ ##### 尝试三: 根据flag进入临界区
470
470
![ bg right:50% 100%] ( figs/soft-3.png )
471
471
- 满足“忙则等待”,但是不满足“空闲则入”
472
472
- flag[ i] =flag[ j] =1
You can’t perform that action at this time.
0 commit comments