한줄요약 sleep + busy waiting
Windows 멀티스레드 프로그래밍 활용
영감은 여기서 얻었음.
thread의 sleep을 할 때 실제 자야하는 시간의 90%만큼만 재우고 나머지는 busy waiting으로 처리하는 것
→ sleep을 하는것은 앞뒤로 커널단에서 thread를 재우고 깨우는 overhead가 발생함으로 시간낭비가 생김.
이 낭비되는 시간마저 자는 시간으로 측정하면 어떨까라는 접근
단점
- 철학자의 수가 기하급수적으로 늘어나면(thread context swiching 시간이 극단적으로 늘어나는 경우) 답이 없음. busy waiting을 하기 이전부터 각자 스레드들을 재우고 깨우는 시간에서 sleep 시간이 90%보다 넘어가버리면서 시간이 밀려버림
- 자는시간이 극단적으로 늘어나도 busy waiting의 효율이 극단적으로 떨어지면서 시간이 밀려버림