Die Funktion speculation() reserviert Speicherplatz für einen spekulativen Puffer und gibt eine Spekulations-ID zurück. Die Spekulations-ID dient für die nachfolgenden Aufrufe der Funktion speculate. () Spekulative Puffer sind eine endliche Ressource: Wenn zum Zeitpunkt des Aufrufs von speculation() kein spekulativer Puffer verfügbar ist, wird eine ID von Null zurückgegeben und der entsprechende DTrace-Fehlerzähler erhöht. Eine ID von Null ist immer ungültig, kann aber an speculate(), commit() oder discard() übergeben werden. Schlägt ein Aufruf von speculation() fehl, wird eine dtrace-Meldung wie in folgendem Beispiel generiert:
dtrace: 2 failed speculations (no speculative buffer space available) |
Der Standardwert für die Anzahl spekulativer Puffer ist 1, kann aber bei Bedarf auf einen höheren Wert eingestellt werden. Weitere Informationen dazu finden Sie unter Spekulationsoptionen und Abstimmung.