解释,请点击这里本段从文档DBMS_ALERT轮询间隔
WAITANY
程序。如果您使用WAITANY
过程,并且如果信令会话执行信号但在信号的一秒钟内未提交,则需要轮询循环,以便此未提交的警报不会伪装其他警报。轮询循环从一秒钟间隔开始,并以指数方式退避至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;
}