Wenn die erforderliche Verarbeitungsdauer zur Beendigung einer Task dazu führen würde, dass andere Threads übermäßig lange warten müssten, gibt ein Thread an einem vorbestimmten Punkt nach. Der Code für solche Tasks mit langer Ausführungszeit enthält an strategischen Punkten in der Verarbeitung Aufrufe an die Nachgebefunktion (yield). Wenn ein Thread eine dieser Tasks ausführt, gibt er nach, wenn er auf einen Nachgebefunktionsaufruf trifft. Andere Threads in der Warteschlange für bereite Threads erhalten so eine Möglichkeit zur Ausführung. Wenn der ursprüngliche Thread das nächste Mal wieder an die Reihe kommt, nimmt er die Ausführung des Codes unmittelbar hinter dem Aufruf an die Nachgebefunktion wieder auf. Vorbestimmte Aufrufe an die Nachgebefunktion geben dem Datenbankserver die Möglichkeit, Threads an Punkten zu unterbrechen, die für die Leistung am vorteilhaftesten sind.
Ein Thread gibt außerdem dann nach, wenn er seine Task nicht fortsetzen kann, bis eine bestimmte Bedingung eintritt. Zum Beispiel gibt ein Thread nach, wenn er auf die Ausführung einer Platten-E/A, auf Daten von einem Client oder auf eine Sperre bzw. andere Ressource wartet.
