728x90
1. 개선전 사진
2. 개선후 사진
우선 philosopher라고 철학자 문제를 c로 구현해 보았다.
위의 사진에서 사진1에서 philo->check->die = 1 이 died가 프린트되고난 후에 바뀌게 된다.
내코드에서는 die = 1 이 된다면 쓰레드가 종료되는 플레그 같은 역활을 하게 된다.
이 때 많은 수의 쓰레드를 돌리면 died가 먼저 출력되고 philo->check->die = 1로 바뀌는 그 사이 시간에
다른 쓰레드에서 어떤 문구를 출력 할수 있게 된다.
따라서 사진2에서 본거와 같이 die = 1 가 먼저 바뀌고 나서 died를 출력하게 된다면 died가 다른쓰레드 문구 보다 먼저 출력되는 일이 없어진다.
이러한 시간차이도 꼼꼼히 생각해봐야할 것 같다. 멀티 쓰레드를 써야할 일이 있다면 이런식의 시간차이도 생각해주고 코드를 작성하게된다면 좋은 코드가 될거 같다.
728x90
'error 일기' 카테고리의 다른 글
405 Method Not Allowed 에러 해결방법 (0) | 2024.06.20 |
---|---|
git push를 master로 했을 떄! (0) | 2024.06.07 |
고쳐도 계속 오류가 날때 한번 생각해보기 (0) | 2023.08.08 |
long 과 int 값을 같다고 생각한 에러 (0) | 2023.06.21 |
address points to the zero page error 일기 (1) | 2023.05.25 |
댓글