speculation() 函数分配推理缓冲区并返回推理标识符。在对 speculate() 函数的后续调用中应使用推理标识符。推理缓冲区是一种有限的资源:如果在调用 speculation() 时无推理缓冲区可用,则返回的 ID 为零,并将递增相应的 DTrace 错误计数器。值为零的 ID 始终无效,但可以传递到 speculate()、commit() 或 discard()。如果调用 speculation() 失败,则将生成与以下示例类似的 dtrace 消息:
dtrace: 2 failed speculations (no speculative buffer space available) |
推理缓冲区的数量缺省值为 1,但是也可以调高。有关更多信息,请参见推理选项和调整。