한줄요약 sleep + busy waiting

Windows 멀티스레드 프로그래밍 활용

영감은 여기서 얻었음.

thread의 sleep을 할 때 실제 자야하는 시간의 90%만큼만 재우고 나머지는 busy waiting으로 처리하는 것

→ sleep을 하는것은 앞뒤로 커널단에서 thread를 재우고 깨우는 overhead가 발생함으로 시간낭비가 생김.

이 낭비되는 시간마저 자는 시간으로 측정하면 어떨까라는 접근

단점

  1. 철학자의 수가 기하급수적으로 늘어나면(thread context swiching 시간이 극단적으로 늘어나는 경우) 답이 없음. busy waiting을 하기 이전부터 각자 스레드들을 재우고 깨우는 시간에서 sleep 시간이 90%보다 넘어가버리면서 시간이 밀려버림
  2. 자는시간이 극단적으로 늘어나도 busy waiting의 효율이 극단적으로 떨어지면서 시간이 밀려버림