philosophers - KimTaebin-ai/study_posts GitHub Wiki
ํ์ ๊ฐ๋ ๋ฐ ํ์ต ๋ด์ฉ
๋ฐ์ดํฐ ๋ ์ด์ค
ํ๋ก์ธ์ค ์ค๋ ๋ฉ
๋ฎคํ ์ค
์ธ๋งํฌ์ด
์์ฌํ๋ ์ฒ ํ์
๋ฌธ์ ๊ฐ์
arguments
์ฒ ํ์ ์, ์๋ช , ๋ฐฅ์ ๋จน๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ, ์ ์๋ ์๊ฐ, ๊ฐ ์ฒ ํ์๊ฐ ์ต์ํ ๋ฐฅ์ ๋จน์ด์ผ ํ๋ ํ์
int number_of_philosophers;
/*
์ฒ ํ์์ ์ :
์ฒ ํ์์ ์์ ํฌํฌ์ ์์
๋๋ค.
*/
int time_to_die;
/*
์ฒ ํ์์ ์๋ช
(๋ฐ๋ฆฌ์ด ๋จ์) :
์ฒ ํ์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฐฅ์ ๋จน๊ธฐ ์์ํ ์์ ์ผ๋ก๋ถํฐ
time_to_die ์๊ฐ๋งํผ์ด ์ง๋๊ฑฐ๋,
ํ๋ก๊ทธ๋จ ์์ ํ time_to_die ์๊ฐ๋งํผ์ด ์ง๋๋๋ก
์์ฌ๋ฅผ ์์ํ์ง ์์ผ๋ฉด ํด๋น ์ฒ ํ์๋ ์ฌ๋งํฉ๋๋ค.
*/
int time_to_eat;
/*
๋ฐฅ์ ๋จน๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ(๋ฐ๋ฆฌ์ด ๋จ์) :
์ฒ ํ์๊ฐ ๋ฐฅ์ ๋จน๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์
๋๋ค.
ํด๋น ์๊ฐ๋์ ์ฒ ํ์๋ ๋ ๊ฐ์ ํฌํฌ๋ฅผ ์ก๊ณ ์์ด์ผ ํฉ๋๋ค.
*/
int time_to_sleep;
/*
์ ์๋ ์๊ฐ(๋ฐ๋ฆฌ์ด ๋จ์) :
์ ์ ์๋ ๋ฐ ์๋ชจ๋๋ ์๊ฐ ์
๋๋ค.
*/
int number_of_times_each_philosopher_must_eat;
/*
๊ฐ ์ฒ ํ์๊ฐ ์ต์ํ ๋ฐฅ์ ๋จน์ด์ผ ํ๋ ํ์(์ ํ์ ์ธ์):
๋ชจ๋ ์ฒ ํ์๊ฐ number_of_times_each_philosopher_must_eat ๋ฒ ์ด์
๋ฐฅ์ ๋จน์ผ๋ฉด ์๋ฎฌ๋ ์ด์
์ด ์ข
๋ฃ๋ฉ๋๋ค.
์ง์ ๋์ง ์์ ๊ฒฝ์ฐ, ์ฒ ํ์๊ฐ ์ฃฝ์ ๋ ์๋ฎฌ๋ ์ด์
์ด ์ข
๋ฃ๋ฉ๋๋ค.
*/
์ถ๋ ฅ๊ฐ
timestamp_in_ms X has taken a fork
timestamp_in_ms X is eating
timestamp_in_ms X is sleeping
timestamp_in_ms X is thinking
timestamp_in_ms X died
๊ฐ๋ฐ ์์
- 1 argv
- 2 invalid check
- 3 table init
- 4 philosopher init
- 5 eat func
- 6 sleep func
- 7 think func
- 8-1 argc๊ฐ 5๊ฐ์ผ ๋ ์ฃฝ๋ ์ฒ ํ์ ์ die
- 8-2 argc๊ฐ 6๊ฐ์ผ ๋ must ์ฒ๋ฆฌ
- 9 pthread join ๊ธฐ๋ค๋ฆฐ ํ free