//////
Search
Duplicate

2021.12.04

오늘의 목표

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→pop→t는 어떤 녀석이길래 mutex 초기화가 필요할듯
3.
elapse 함수 뭐하는 놈이냐 넌
코드분석 너무 힘들어서 쓰레드부터 만들어보기로 함