@@ -153,78 +153,40 @@ <h3>The Problem</h3>
153153 < div class ="diagram-container ">
154154 < div class ="mermaid ">
155155sequenceDiagram
156- philosopher_4-> > philosopher_4: {:start_hungry, :fork_4, :fork_0}
157- Note over philosopher_4,philosopher_4: t=600ms
158- philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
159- Note over philosopher_1,philosopher_1: t=600ms
160- philosopher_4-> > fork_4: {:request_fork, :philosopher_4}
161- Note over philosopher_4,fork_4: t=600ms
162- philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
163- Note over philosopher_1,fork_2: t=600ms
164- fork_4-> > philosopher_4: {:fork_granted, :fork_4}
165- Note over fork_4,philosopher_4: t=600ms
166- philosopher_3-> > philosopher_3: {:start_hungry, :fork_4, :fork_3}
167- Note over philosopher_3,philosopher_3: t=600ms
168- fork_2-> > philosopher_1: {:fork_granted, :fork_2}
169- Note over fork_2,philosopher_1: t=600ms
170- philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
171- Note over philosopher_0,philosopher_0: t=600ms
172- philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_3}
173- Note over philosopher_2,philosopher_2: t=600ms
174156 philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
175157 Note over philosopher_2,philosopher_2: t=200ms
176158 philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
177159 Note over philosopher_1,philosopher_1: t=200ms
178160 philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
179161 Note over philosopher_0,philosopher_0: t=200ms
180- philosopher_1-> > fork_1: {:request_fork, :philosopher_1}
181- Note over philosopher_1,fork_1: t=600ms
182- philosopher_4-> > fork_0: {:request_fork, :philosopher_4}
183- Note over philosopher_4,fork_0: t=600ms
184162 philosopher_2-> > philosopher_2: {:mumble, "I'm hungry!"}
185163 Note over philosopher_2,philosopher_2: t=200ms
186164 philosopher_1-> > philosopher_1: {:mumble, "I'm hungry!"}
187165 Note over philosopher_1,philosopher_1: t=200ms
188- philosopher_3-> > fork_4: {:request_fork, :philosopher_3}
189- Note over philosopher_3,fork_4: t=600ms
190166 philosopher_0-> > philosopher_0: {:mumble, "I'm hungry!"}
191167 Note over philosopher_0,philosopher_0: t=200ms
192- philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
193- Note over philosopher_0,fork_0: t=600ms
194168 philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
195169 Note over philosopher_2,fork_2: t=200ms
196170 philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
197171 Note over philosopher_1,fork_2: t=200ms
198172 philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
199173 Note over philosopher_0,fork_0: t=200ms
200- fork_0-> > philosopher_0: {:fork_granted, :fork_0}
201- Note over fork_0,philosopher_0: t=200ms
202174 fork_2-> > philosopher_2: {:fork_granted, :fork_2}
203175 Note over fork_2,philosopher_2: t=200ms
204- philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
205- Note over philosopher_0,fork_1: t=200ms
206- fork_1-> > philosopher_0: {:fork_granted, :fork_1}
207- Note over fork_1,philosopher_0: t=200ms
208- fork_1-> > philosopher_1: {:fork_granted, :fork_1}
209- Note over fork_1,philosopher_1: t=600ms
210- fork_0-> > philosopher_4: {:fork_granted, :fork_0}
211- Note over fork_0,philosopher_4: t=600ms
212- fork_0-> > philosopher_0: {:fork_denied, :fork_0}
213- Note over fork_0,philosopher_0: t=600ms
176+ fork_0-> > philosopher_0: {:fork_granted, :fork_0}
177+ Note over fork_0,philosopher_0: t=200ms
178+ fork_2-> > philosopher_1: {:fork_denied, :fork_2}
179+ Note over fork_2,philosopher_1: t=200ms
214180 philosopher_2-> > fork_0: {:request_fork, :philosopher_2}
215181 Note over philosopher_2,fork_0: t=200ms
216- fork_4-> > philosopher_3: {:fork_denied, :fork_4}
217- Note over fork_4,philosopher_3: t=600ms
218- philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
219- Note over philosopher_2,fork_2: t=600ms
182+ philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
183+ Note over philosopher_0,fork_1: t=200ms
220184 fork_0-> > philosopher_2: {:fork_denied, :fork_0}
221185 Note over fork_0,philosopher_2: t=200ms
186+ fork_1-> > philosopher_0: {:fork_granted, :fork_1}
187+ Note over fork_1,philosopher_0: t=200ms
222188 philosopher_2-> > fork_2: {:release_fork, :philosopher_2}
223189 Note over philosopher_2,fork_2: t=200ms
224- fork_2-> > philosopher_1: {:fork_denied, :fork_2}
225- Note over fork_2,philosopher_1: t=200ms
226- fork_2-> > philosopher_2: {:fork_denied, :fork_2}
227- Note over fork_2,philosopher_2: t=600ms
228190 philosopher_0-> > philosopher_0: {:mumble, "I'm full!"}
229191 Note over philosopher_0,philosopher_0: t=300ms
230192 philosopher_0-> > fork_0: {:release_fork, :philosopher_0}
@@ -235,26 +197,26 @@ <h3>The Problem</h3>
235197 Note over philosopher_0,philosopher_0: t=400ms
236198 philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
237199 Note over philosopher_1,philosopher_1: t=400ms
238- philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
239- Note over philosopher_2,philosopher_2: t=400ms
240200 philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
241201 Note over philosopher_0,fork_0: t=400ms
242202 philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
243203 Note over philosopher_1,fork_2: t=400ms
204+ philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
205+ Note over philosopher_2,philosopher_2: t=400ms
244206 philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
245207 Note over philosopher_2,fork_2: t=400ms
246208 fork_0-> > philosopher_0: {:fork_granted, :fork_0}
247209 Note over fork_0,philosopher_0: t=400ms
248- philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
249- Note over philosopher_0,fork_1: t=400ms
250- fork_1-> > philosopher_0: {:fork_granted, :fork_1}
251- Note over fork_1,philosopher_0: t=400ms
252210 fork_2-> > philosopher_1: {:fork_granted, :fork_2}
253211 Note over fork_2,philosopher_1: t=400ms
254212 fork_2-> > philosopher_2: {:fork_denied, :fork_2}
255213 Note over fork_2,philosopher_2: t=400ms
214+ philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
215+ Note over philosopher_0,fork_1: t=400ms
256216 philosopher_1-> > fork_1: {:request_fork, :philosopher_1}
257217 Note over philosopher_1,fork_1: t=400ms
218+ fork_1-> > philosopher_0: {:fork_granted, :fork_1}
219+ Note over fork_1,philosopher_0: t=400ms
258220 fork_1-> > philosopher_1: {:fork_denied, :fork_1}
259221 Note over fork_1,philosopher_1: t=400ms
260222 philosopher_1-> > fork_2: {:release_fork, :philosopher_1}
@@ -265,108 +227,92 @@ <h3>The Problem</h3>
265227 Note over philosopher_0,fork_0: t=500ms
266228 philosopher_0-> > fork_1: {:release_fork, :philosopher_0}
267229 Note over philosopher_0,fork_1: t=500ms
268- philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
269- Note over philosopher_1,philosopher_1: t=600ms
270230 philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
271231 Note over philosopher_2,philosopher_2: t=600ms
272- philosopher_1-> > fork_2 : {:request_fork , :philosopher_1 }
273- Note over philosopher_1,fork_2 : t=600ms
232+ philosopher_1-> > philosopher_1 : {:start_hungry , :fork_2, :fork_1 }
233+ Note over philosopher_1,philosopher_1 : t=600ms
274234 philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
275235 Note over philosopher_0,philosopher_0: t=600ms
276- philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
277- Note over philosopher_2,fork_2: t=600ms
278236 philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
279237 Note over philosopher_0,fork_0: t=600ms
280- fork_2-> > philosopher_1: {:fork_granted, :fork_2}
281- Note over fork_2,philosopher_1: t=600ms
282- fork_2-> > philosopher_2: {:fork_denied, :fork_2}
283- Note over fork_2,philosopher_2: t=600ms
284- philosopher_1-> > fork_1: {:request_fork, :philosopher_1}
285- Note over philosopher_1,fork_1: t=600ms
286238 fork_0-> > philosopher_0: {:fork_granted, :fork_0}
287239 Note over fork_0,philosopher_0: t=600ms
240+ philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
241+ Note over philosopher_2,fork_2: t=600ms
242+ philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
243+ Note over philosopher_1,fork_2: t=600ms
288244 philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
289245 Note over philosopher_0,fork_1: t=600ms
290- fork_1-> > philosopher_1: {:fork_granted, :fork_1}
291- Note over fork_1,philosopher_1: t=600ms
292- fork_1-> > philosopher_0: {:fork_denied, :fork_1}
246+ fork_2-> > philosopher_2: {:fork_granted, :fork_2}
247+ Note over fork_2,philosopher_2: t=600ms
248+ fork_2-> > philosopher_1: {:fork_denied, :fork_2}
249+ Note over fork_2,philosopher_1: t=600ms
250+ philosopher_2-> > fork_0: {:request_fork, :philosopher_2}
251+ Note over philosopher_2,fork_0: t=600ms
252+ fork_0-> > philosopher_2: {:fork_denied, :fork_0}
253+ Note over fork_0,philosopher_2: t=600ms
254+ philosopher_2-> > fork_2: {:release_fork, :philosopher_2}
255+ Note over philosopher_2,fork_2: t=600ms
256+ fork_1-> > philosopher_0: {:fork_granted, :fork_1}
293257 Note over fork_1,philosopher_0: t=600ms
294- philosopher_0-> > fork_0: {:release_fork, :philosopher_0}
295- Note over philosopher_0,fork_0: t=600ms
296- philosopher_1-> > philosopher_1: {:mumble, "I'm full!"}
297- Note over philosopher_1,philosopher_1: t=700ms
298- philosopher_1-> > fork_2: {:release_fork, :philosopher_1}
299- Note over philosopher_1,fork_2: t=700ms
300- philosopher_1-> > fork_1: {:release_fork, :philosopher_1}
301- Note over philosopher_1,fork_1: t=700ms
302- philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
303- Note over philosopher_0,philosopher_0: t=800ms
304258 philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
305259 Note over philosopher_1,philosopher_1: t=800ms
306- philosopher_0 -> > fork_0 : {:request_fork , :philosopher_0 }
307- Note over philosopher_0,fork_0 : t=800ms
260+ philosopher_2 -> > philosopher_2 : {:start_hungry , :fork_2, :fork_0 }
261+ Note over philosopher_2,philosopher_2 : t=800ms
308262 philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
309263 Note over philosopher_1,fork_2: t=800ms
310- fork_0 -> > philosopher_0 : {:fork_granted , :fork_0 }
311- Note over fork_0,philosopher_0 : t=800ms
264+ philosopher_2 -> > fork_2 : {:request_fork , :philosopher_2 }
265+ Note over philosopher_2,fork_2 : t=800ms
312266 fork_2-> > philosopher_1: {:fork_granted, :fork_2}
313267 Note over fork_2,philosopher_1: t=800ms
314- philosopher_0 -> > fork_1 : {:request_fork , :philosopher_0 }
315- Note over philosopher_0,fork_1 : t=800ms
268+ fork_2 -> > philosopher_2 : {:fork_denied , :fork_2 }
269+ Note over fork_2,philosopher_2 : t=800ms
316270 philosopher_1-> > fork_1: {:request_fork, :philosopher_1}
317271 Note over philosopher_1,fork_1: t=800ms
318- fork_1-> > philosopher_0: {:fork_granted, :fork_1}
319- Note over fork_1,philosopher_0: t=800ms
320272 fork_1-> > philosopher_1: {:fork_denied, :fork_1}
321273 Note over fork_1,philosopher_1: t=800ms
322- philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
323- Note over philosopher_2,philosopher_2: t=800ms
324274 philosopher_1-> > fork_2: {:release_fork, :philosopher_1}
325275 Note over philosopher_1,fork_2: t=800ms
326- philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
327- Note over philosopher_2,fork_2: t=800ms
328- fork_2-> > philosopher_2: {:fork_granted, :fork_2}
329- Note over fork_2,philosopher_2: t=800ms
330- philosopher_2-> > fork_0: {:request_fork, :philosopher_2}
331- Note over philosopher_2,fork_0: t=800ms
332- fork_0-> > philosopher_2: {:fork_denied, :fork_0}
333- Note over fork_0,philosopher_2: t=800ms
334- philosopher_2-> > fork_2: {:release_fork, :philosopher_2}
335- Note over philosopher_2,fork_2: t=800ms
276+ philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
277+ Note over philosopher_0,philosopher_0: t=800ms
278+ philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
279+ Note over philosopher_0,fork_0: t=800ms
280+ fork_0-> > philosopher_0: {:fork_denied, :fork_0}
281+ Note over fork_0,philosopher_0: t=800ms
336282 philosopher_0-> > philosopher_0: {:mumble, "I'm full!"}
337283 Note over philosopher_0,philosopher_0: t=900ms
338284 philosopher_0-> > fork_0: {:release_fork, :philosopher_0}
339285 Note over philosopher_0,fork_0: t=900ms
340286 philosopher_0-> > fork_1: {:release_fork, :philosopher_0}
341287 Note over philosopher_0,fork_1: t=900ms
342- philosopher_2-> > philosopher_2: {:start_hungry, :fork_2, :fork_0}
343- Note over philosopher_2,philosopher_2: t=1000ms
344- philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
345- Note over philosopher_1,philosopher_1: t=1000ms
346288 philosopher_0-> > philosopher_0: {:start_hungry, :fork_0, :fork_1}
347289 Note over philosopher_0,philosopher_0: t=1000ms
348- philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
349- Note over philosopher_1,fork_2: t=1000ms
350290 philosopher_0-> > fork_0: {:request_fork, :philosopher_0}
351291 Note over philosopher_0,fork_0: t=1000ms
352- fork_2-> > philosopher_1: {:fork_granted, :fork_2}
353- Note over fork_2,philosopher_1: t=1000ms
354292 fork_0-> > philosopher_0: {:fork_granted, :fork_0}
355293 Note over fork_0,philosopher_0: t=1000ms
356- philosopher_1-> > fork_1: {:request_fork, :philosopher_1}
357- Note over philosopher_1,fork_1: t=1000ms
358294 philosopher_0-> > fork_1: {:request_fork, :philosopher_0}
359295 Note over philosopher_0,fork_1: t=1000ms
360- fork_1-> > philosopher_1: {:fork_granted, :fork_1}
361- Note over fork_1,philosopher_1: t=1000ms
362- fork_1-> > philosopher_0: {:fork_denied, :fork_1}
296+ fork_1-> > philosopher_0: {:fork_granted, :fork_1}
363297 Note over fork_1,philosopher_0: t=1000ms
364- philosopher_0 -> > fork_0 : {:release_fork , :philosopher_0 }
365- Note over philosopher_0,fork_0 : t=1000ms
298+ philosopher_2 -> > philosopher_2 : {:start_hungry , :fork_2, :fork_0 }
299+ Note over philosopher_2,philosopher_2 : t=1000ms
366300 philosopher_2-> > fork_2: {:request_fork, :philosopher_2}
367301 Note over philosopher_2,fork_2: t=1000ms
368- fork_2-> > philosopher_2: {:fork_denied, :fork_2}
302+ philosopher_1-> > philosopher_1: {:start_hungry, :fork_2, :fork_1}
303+ Note over philosopher_1,philosopher_1: t=1000ms
304+ fork_2-> > philosopher_2: {:fork_granted, :fork_2}
369305 Note over fork_2,philosopher_2: t=1000ms
306+ philosopher_1-> > fork_2: {:request_fork, :philosopher_1}
307+ Note over philosopher_1,fork_2: t=1000ms
308+ fork_2-> > philosopher_1: {:fork_denied, :fork_2}
309+ Note over fork_2,philosopher_1: t=1000ms
310+ philosopher_2-> > fork_0: {:request_fork, :philosopher_2}
311+ Note over philosopher_2,fork_0: t=1000ms
312+ fork_0-> > philosopher_2: {:fork_denied, :fork_0}
313+ Note over fork_0,philosopher_2: t=1000ms
314+ philosopher_2-> > fork_2: {:release_fork, :philosopher_2}
315+ Note over philosopher_2,fork_2: t=1000ms
370316 </ div >
371317 </ div >
372318
0 commit comments