speculation() 関数は、投機バッファーを割り当て、投機識別子を返します。返された投機識別子は、その後、speculate() 関数を呼び出すときに使用します。投機バッファーは有限のリソースです。 speculation() の呼び出し時に使用可能な投機バッファーがない場合、ID としてゼロが返され、対応する DTrace エラーカウンタの値が大きくなります。値がゼロの ID は常に無効ですが、speculate()、commit()、discard() のいずれかの関数に渡すことができます。speculation() の呼び出しに失敗した場合、次のような dtrace メッセージが表示されます。
dtrace: 2 failed speculations (no speculative buffer space available) |
投機バッファーの数は、デフォルトでは 1 個ですが、さらに増やすこともできます。詳細については、「投機オプションとチューニング」を参照してください。