오늘의 목표
jseo 코드 분석
외장함수 정리
진행과정
1.
jseo 코드 분석
a.
bigpel 블로그 읽기
2.
pseudo코드 작성
3.
pthread_create 사용해보기
결과
•
코드분석
static bool meals_ready_to_eat(int ac, char **av, t_op *op, t_philo **philo)
{
int i;
//입력값 int로 바꾸기
if (!jatoi(&av[1], &op->total) || !jatoi(&av[2], &op->time_die)
|| !jatoi(&av[3], &op->time_eat) || !jatoi(&av[4], &op->time_nap))
return (false);
//인자값 중에 옵션까지 받아왔으면 그 녀석도 int로 바꿔주고 구조체에 넣어준다
if (ac == 6 && !jatoi(&av[5], &op->limit))
return (false);
//필요한 만큼 동적할당 1.
if (!jcalloc((void **)(&op->f), op->total, sizeof(t_mu))
|| !jcalloc((void **)(philo), op->total, sizeof(t_philo)))
return (false);
i = -1;
while (++i < op->total)
if (pthread_mutex_init(&op->f[i], NULL))
return (false);
if (pthread_mutex_init(&op->p, NULL)
|| pthread_mutex_init(&op->t, NULL))
return (false);
return (true);
}
C
복사
1.
동적할당
a.
jcalloc((void **)(&op->f), op->total, sizeof(t_mu)
입력받은 철학자 수 만큼 포크 수도 동적할당 받는듯.
t_mu 크기만큼 한걸보면 쓰레드마다 필요하기 때문에 한듯
b.
jcalloc((void **)(philo), op->total, sizeof(t_philo)
t_op와 t_philo의 차이를 볼 필요가 있을 거 같은데, t_op 구조체는 입력받은 값에 대한 구조체인 거 같고 t_philo는 철학자마다 쓰레드를 유지해야하기 때문에 필요한 구조체인 거 같다
2.
mutex초기화
a.
철학자 수만큼 각각의 mutex를 초기화하는 것으로 보임
b.
궁금증
•
op→p와 op→t는 어떤 녀석이길래 mutex 초기화가 필요할듯
•
3.
elapse 함수 뭐하는 놈이냐 넌
•
코드분석 너무 힘들어서 쓰레드부터 만들어보기로 함