-1
the Dining Philosophers Problem에서 근무하는 임. 용 제가 발견이 루프를 이용하여 포크 임 배포 :"%"로 작업하면 예기치 않은 결과가 발생합니다.
int philosophersNumber=5;
for (int i = 0; i < philosophersNumber; i++) {
philosophers[i] = new Philosopher(
i,
forks[i],
forks[(i + 1) % philosophersNumber]
);
}
- I을 : 철학자 수
- 포크 [I] : 오른손 frok.
- 포크 [(i + 1) % 철학자 번호] : 왼손의 프릭. 내가 루프의 일부 지문을 추가하는 경우
는, 출력은 다음과 같습니다
----- PHILOSOHPER 0 ------
Right fork: 0
Left fork: 1
----- PHILOSOHPER 1 ------
Right fork: 1
Left fork: 2
----- PHILOSOHPER 2 ------
Right fork: 2
Left fork: 3
----- PHILOSOHPER 3 ------
Right fork: 3
Left fork: 4
----- PHILOSOHPER 4 ------
Right fork: 4
Left fork: 0
글쎄, 내 의심의 여지가 간단하다 : 이유의 결과는 (I + 1) % 5는 i + 1이 5 일 때까지 항상 i + 1과 같고, 결과는 0입니까? 변수의 유형과 관련 있다고 생각되지만 사실은 모르겠습니다.
모듈러스가 무엇인지 알고 있습니까? – tkausl