구현순서

hyenam·2021년 10월 16일

Philosophers

목록 보기
7/7

이미 몇개 임시??로 구현해놓고 쓰는거긴 하지만 확실히 어떤 순서로 구현을 할 건지 정하고 하는 게 좀더 수월하게 구현을 할 수 있지 않을까한다.

  1. 멀티스레드 구현
  2. 뮤텍스 사용해서 스레드 돌려보기
  3. 인자 파싱
  4. 시간 출력
  5. 두개의 포크를 가진 철학자만 밥먹게 하기

멀티 스레드 아마 구현했고 뮤텍스도 사용해서 일단 하나의 스레드만 해당 함수에 들어가게 했다. 아마도???

그럼 이제 인자 파싱을 하고 구조체 변수도 늘려야 한다

인자 파싱

일단 인자로 받아야하는 항목들이
철학자의 수, 철학자의 수명 , 밥을 먹는데 걸리는 시간, 잠자는 시간, 각 철학자가 최소한 밥을 먹어야 하는 횟수다. (총 5개)

마지막은 선택사항이라 따로 처리를 해줘야한다.

다행히 숫자만 들어가서 푸쉬스압때처럼 인자 예외처리를 하면 될 것 같다. (+여기에 음수가 들어올수 없으니 음수 예외처리까지해야함)

먼저 숫자만 들어온다고 가정을 한 코드를 짜고 그 후에 에러처리를 하면 될것 같다.

예외처리 항목
1. 인자가 5개 초과로 들어올때
2. 인자가 4개 미만으로 들어올때
3. 인자에 숫자가 아닌 무언가가 있을때
4. "1 2" 이럴때도 인식 되게 끔
5. 인자로 NULL 들어올때

전부 완료

시간출력

현재시간을 밀리초로 나타내라고 했으니

tv_sec / 1000

그냥 이런식으로 하면 될 것 같다.

작업 차이 시간을 나타내라고 명시가 안되어있으니 이게 맞겠지?

포크

포크는 뮤텍스 변수고
포크를 철학자 수 만큼 배열로 만들어주고 어떻게 어떻게 하는 거라고 한다.

철학자가 한명일떈 죽는 시간걸리고 죽는게 맞고

뮤텍스 변수 어제 뮤텍스 공부할떄 봤었는데 솔직히 기억 안나서 다시 봐야한다.

profile
공부한 걸 정리하고 있습니다.

0개의 댓글