Was mir auffällt...
Thorus vergisst, dass es noch einen Scheduler gibt.
Wenn du sleep(15) ausführst, wird die dir zugewiese Zeitscheibe sofort abgebrochen und der nächste Thread/Prozess bekommt eine.
Der Scheduler wird dir auch mindestens die 15ms Ruhe gönnen, die du angefordert hast. Da die ganze Verwaltung aber auch etwas Zeit kostet kannst du dir sicher sein, dass du länger wartest.
Es ist auch möglich, dass zwischen deiner Abgabe der CPU Zeit und einer erneuten Zuweisung mehrere andere threads ranwollen -> Du wartest also noch länger.
In Luckies Thread Tutorial dürfte das erklärt werden.