테이블에 앉아 있는 철학자의 수와 포크의 수.
밀리초 단위로, 철학자가 마지막으로 밥을 먹은 지 'time_to_die' 시간만큼이 지나거나, 프로그램 시작 후 'time_to_die' 시간만큼이 지나면 해당 철학자는 사망합니다.
리초 단위로, 철학자가 밥을 먹는 데 걸리는 시간입니다. 해당 시간동안, 철학자는 두 개의 포크를 소유하고 있어야 합니다.
밀리초 단위로, 잠을 자는 데 소모되는 시간입니다.
해당 인자값은 선택사항입니다. 모든 철학자가 'number_of_times_each_philosopher_must_eat' 횟수만큼 밥을 먹었다면, 시뮬레이션이 종료됩니다. 해당 값이 명시되어 있지 않다면, 철학자가 한 명이라도 사망할 때까지 시뮬레이션은 계속됩니다.
코드의 실행을 늦추는 함수. 마이크로초를 기반으로 하며 밀리초로 바꾸려면 원하는 밀리초 * 1000으로 사용한다.
while (1) {
print(hello)
usleep(1000 * 1000)
}
// 1초마다 출력하기
#include <sys/time.h>
int gettimeofday(struct timeval &restrict tp, void *restrict tzp);
_STRUCT_TIMEVAL
{
__darwin_time_t tv_sec;
__darwin_suseconds_t tv_usec;
};
현재 시간을 가져오고 시스템의 시간값을 설정한다.
철학자는 먹지 말고 죽어야 한다
아무도 죽지 않아야 한다
아무도 죽지 않아야 하며 모든 철학자가 각각 적어도 7번 먹었을 때 시뮬레이션을 중지해야 한다
아무도 죽지 않아야 한다
철학자는 죽어야 한다