실행할 스레드가 많을 때, 어떤 스레드를 얼마나 오랫동안 실행할지 결정하는 것은 스레드 스케줄러다. 제대로 된 운영체제라면 공평한 결정을 내리려 애쓰겠지만, 그 정책은 바뀔 수 있다. 따라서 좋은 프로그램이라면 스케줄링 정책에는 의존하지 말아야 한다 정확성을 보장하거나 성능을 높이기 위해 스레드 스케줄러에 의존하는 프로그램은 이식성이 떨어진다.


 그렇다면 스케줄러에 의존성을 낮으면서 이식성이 좋은 프로그램은 어떻게 개발하여야 할까? 실행 가능 스레드의 평균적 수가 프로세서 수보다 너무 많아지지 않도록 하는 것이다. 그렇게 했을 때 스레드 스케줄러가 할 수 있는 일이라고는 그저 더 이상 실행할 수 없을 때까지 실행 가능한 스레드를 실행하는 것뿐이다. 


 실행 가능 스레드의 갯수를 최소한으로 유지하려면 어떻게 해야할까? 그것은 스레드가 필요한 일을 하고 나서 다음에 할 일을 기다리게 만드는 것이다. 스레드는 필요한 일을 하고 있지 않을 때는 실행 중이어서는 안된다. 

요약

프로그램의 정확성을 스레드 스케줄러에 의존하지 말아야 한다. 그런 프로그램은 잔정적이지도 않고 이식성이 보장되지 않는다. 


+ Recent posts