は、ドキュメントDBMS_ALERTポーリング間隔
WAITANY
手順から、してください、ここではこの段落を説明します。WAITANY
プロシージャを使用していて、シグナリングセッションがシグナルを出してもシグナルの1秒以内にコミットしない場合は、このコミットされていないアラートが他のアラートを偽装しないようにポーリングループが必要です。ポーリングループは1秒間隔で開始し、指数関数的に30秒間隔に戻ります。
ここで、WAITANYがサーバー上で呼び出されると、スレッドは特定の間隔でイベントの存在をクエリすると正しく認識されていますか?また、WAITANYに十分長いタイムアウトを設定した場合、イベントが発生すると、現在の要求間隔が経過した後にのみ通知されますか?それら。サーバー上のこのコードのようなものです
function WaitAny(ATimeout) {
const intervals = [0, 1, ....., 30);
for (i = 0; i < intervals.length; i++) {
Sleep(min(intervals[i], ATimeout))
if (IsExistsEvents())
return 0;
ATimeout -= intervals[i];
if (ATimeout <= 0)
return 1;
}
maxInterval = intervals[intervals.length - 1];
while (ATimeout > 0) {
Sleep(min(maxInterval, ATimeout))
if (IsExistsEvents())
return 0;
ATimeout -= maxInterval;
}
return 1;
}