The basics of threading a process (ํ๋ก์ธ์ค ์ค๋ ๋ฉ์ ๋ํ ๊ธฐ๋ณธ ๊ฐ๋ )
How to work on the same memory space (๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ด๋ป๊ฒ ์์ ํ๋์ง)
How to make threads (์ค๋ ๋ ๋ง๋๋ ๋ฐฉ๋ฒ)
Mutex / semaphore / shared memory (๋ฎคํ ์ค / ์ธ๋งํฌ์ด / ๊ณต์ ๋ฉ๋ชจ๋ฆฌ)
๊ธฐ๋ณธ ๊ฐ๋ ๋ค์ ์์งํ ์ฑ๋ก, ๋์ผํ ๊ธฐ๋ณธ ๊ท์น์ ๊ฐ์ง ์ธ ๊ฐ์ ๊ฐ๋ณ ํ๋ก๊ทธ๋จ ์์ฑํ๊ธฐ
Norm (42์ ์์ฒด ์ฝ๋ฉ ์ปจ๋ฒค์ )์ ๋ฐ๋ผ, C๋ก ์์ฑํ ๊ฒ.
์ด๋ค ๋์, ์ถฉ๋, ์ ์๋์ง ์์ ํ๋ ํน์ ์ฝ๋ฉ ์ปจ๋ฒค์ ์๋ฌ ์ ํ๋ก์ ํธ๋ 0์ .
์ํ ํ ์ด๋ธ์ ๋๋ฌ ์์ ๋ช ๋ช ์ ์ฒ ํ์๋ค์ ์์ฌ๋ฅผ ํ๊ฑฐ๋, ์๊ฐํ๊ฑฐ๋, ์๊ณ ์๋ค.
์ฒ ํ์๋ค์ ๋์์ ํ๋์ ํ๋๋ง ํ๋ค. ์ด๋ฅผ ํ ๋ฉด ์์ฌ๋ฅผ ํ๊ณ ์์ ๋๋ ์๊ฐํ๊ฑฐ๋, ์์ง ์๋๋ค.
์ํ ํ ์ด๋ธ ์ค์์๋ ์คํ๊ฒํฐ๊ฐ ๋ ํฐ ์ ์๊ฐ ์๋ค.
์คํ๊ฒํฐ๊ฐ ํฌํฌ ํ๋๋ก ๋จน๊ธฐ ์ด๋ ค์์, ์ฒ ํ์๋ค์ ์ ์์ ํฌํฌ๋ฅผ ๋ค๊ณ ์คํ๊ฒํฐ๋ฅผ ๋จน๋๋ค.
์ฒ ํ์๋ค์ ๊ตถ์ด ์ฃฝ์ผ๋ฉด ์ ๋๋ค.
๋ชจ๋ ์ฒ ํ์๋ค์ ์คํ๊ฒํฐ๋ฅผ ๋จน๊ณ ์ถ๋ค.
์ฒ ํ์๋ค์ ์๋ก ๋งํ์ง ์๋๋ค.
์ฒ ํ์๋ค์ ๋ค๋ฅธ ์ฒ ํ์๊ฐ ์ธ์ (๊ตถ์ด) ์ฃฝ์์ง ๋ชจ๋ฅธ๋ค.
ํ ๋ช ์ ์ฒ ํ์๊ฐ ์์ฌ๋ฅผ ๋๋ด๋ฉด, ๊ทธ๋ ํฌํฌ๋ฅผ ๋ด๋ ค๋๊ณ ์ ์๊ธฐ ์์ํ๋ค.
์ฒ ํ์๊ฐ ์ ์๊ธฐ๋ฅผ ๋๋ด๋ฉด, ์๊ฐํ๊ธฐ๋ฅผ ์์ํ๋ค.
ํ ์ฒ ํ์๊ฐ ์ฃฝ์ผ๋ฉด ์๋ฎฌ๋ ์ด์ ์ด ๋๋๋ค.
๊ฐ๋ณ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๋์ผํ ์ต์ ๋ค์ ๊ฐ์ ธ์ผ ํ๋ค.
- number_of_philosophers : ์ฒ ํ์์ ์, ์ฆ ํฌํฌ์ ๊ฐฏ์
- time_to_die : ๋ฐ๋ฆฌ์ธ์ปจ ๋จ์. ํ ์ฒ ํ์๊ฐ ์์ฌ๋ฅผ ์์ํ์ง ์์ผ๋ฉด, ๊ทธ๊ฐ ๋ง์ง๋ง ์์ฌ๋ฅผ ์์ํ๊ฑฐ๋ ์๋ฎฌ๋ ์ด์ ์ด ์์๋์ง โtime_to_dieโ ์ด ๋ด์ ๊ทธ๋ ์ฃฝ๋๋ค.
- time_to_eat : ๋ฐ๋ฆฌ์ธ์ปจ ๋จ์. ์ฒ ํ์๊ฐ ์์ฌ๋ฅผ ํ๋ ์๊ฐ. ์ด ์๊ฐ๋์ ์ฒ ํ์๋ ํฌํฌ ๋ ๊ฐ๋ฅผ ๋ค๊ณ ์๋ค.
- time_to_sleep: ๋ฐ๋ฆฌ์ธ์ปจ ๋จ์. ์ฒ ํ์๊ฐ ์๋ ์๊ฐ.
- number_of_times_each_philosopher_must_eat: (optional argument). ๋ง์ฝ ๋ชจ๋ ์ฒ ํ์๋ค์ด ์ต์ํ ์ด ํ์๋งํผ ์์ฌ๋ฅผ ํ๋ค๋ฉด, ์๋ฎฌ๋ ์ด์ ์ ๋๋๋ค. ๋ง์ฝ ์ด ์ธ์๊ฐ ์ค์ ๋์ง ์์๋ค๋ฉด, ์ฒ ํ์๊ฐ ์ฃฝ์์ ๋๋ง ์๋ฎฌ๋ ์ด์ ์ด ๋๋๋ค. ๊ฐ๊ฐ์ ์ฒ ํ์๋ 1๋ถํฐ โnumber_of_philosophersโ ์ฌ์ด์ ์ซ์๋ค ์ค ๊ฐ๊ฐ์ ์ซ์๋ฅผ ๋ถ์ฌ๋ฐ๊ฒ ๋๋ค.
1๋ถํฐ โnumber_of_philosophersโ ๊น์ง์ ์์๋๋ก ์ฒ ํ์๋ค์ ๋๋ฌ ์์ ์๋ค. (์ด๋ฅผํ ๋ฉด n๋ฒ ์ฒ ํ์ ์์๋ n+1๋ฒ ์ฒ ํ์๊ฐ ์์ ์๋ค.) ์ฒ ํ์์ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ๋ค.
- timestamp_in_ms X has taken a fork
- timestamp_in_mx X is eating
- timestamp_in_ms X is sleeping
- timestamp_in_ms X is thinking
- timestamp_in_ms X died X ๋ ์ฒ ํ์๊ฐ ๋ถ์ฌ๋ฐ์ ์ซ์๋ก, timestamp_in_ms๋ ๋ฐ๋ฆฌ์ธ์ปจ ๋จ์์ ์์๋ ์๊ฐ์ ๊ธฐ๋ก ์ถ๋ ฅ๋ ์ํ๋ค์ ๋ค๋ฅธ ์ฒ ํ์์ ์ํ์ ์์ด๊ฑฐ๋ ํผํฉ๋๋ฉด ์๋๋ค
ํ ์ฒ ํ์์ ์ฃฝ์๊ณผ ๊ทธ ์ฃฝ์์ ๋ํ ์ถ๋ ฅ ์ฌ์ด์ 10 ๋ฐ๋ฆฌ์ธ์ปจ ์ด์์ ์๊ฐ์ฐจ๊ฐ ์์ผ๋ฉด ์๋๋ค
๊ฐ์กฐ, ์ฒ ํ์๊ฐ ์ฃฝ๋ ์ํฉ์ ์ต๋ํ ํผํ์.