有谁能解释一下为什么下面的YAP代码不会导致变量Result与time_out统一
?- time_out(sleep(3),1,Result).
Result = success.
?- time_out(sleep(3),2,Result).
Result = success.
?- time_out(sleep(3),1000,Result).
Result = success.
?- time_out(sleep(3),2000,Result).根据文档,谓词应该按照以下方式工作:
time_out(+Goal, +Timeout, -Result)使用有时间限制的Goal执行目标Timeout,其中以毫秒为单位测量Timeout。如果目标成功,则将Result与success统一起来。如果定时器在目标终止前过期,则将Result与time_out统一起来。
发布于 2015-10-06 10:20:36
YAP的文件还指出:
最后,即使定时器是以毫秒为单位设置的,但当前的实现依赖于
alarm/3,因此只能提供秒级的精度。
反过来,sleep/1的文档声明:
阻塞当前线程的
Time秒。
但是,在这种情况下,问题可能与时间无关,而是因为对sleep/1的调用阻塞了正在执行time_out/3调用的当前线程。尽管如此,我尝试了time_out/3谓词与其他目标,也没有得到预期的时间。因此,其中可能有一些错误。
https://stackoverflow.com/questions/32966383
复制相似问题