我试图用下面的代码(在操场上)测试法老的延续设施:
| cont f |
f:=[
|i|
i:=0.
Continuation currentDo: [ :cc | cont:=cc ].
i:=i+1.
].
f value. "1"
cont. "a Continuation"
但是,当我调用保存在cont
中的延续(用cont value.
代替cont.
)时,图像立即冻结,我必须按atl+.
才能获得控制权。
VM版本:VM: NBCoInterpreter NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 NBCogit NativeBoost-CogPlugin-GuillermoPolito.19 uuid: acc98e51-2fba-4841-a965-2975997bba66 May 15 2014 https://github.com/pharo-project/pharo-vm.git Commit: ed4a4f59208968a21d82fd2406f75c2c4de558b2 Date: 2014-05-15 18:23:04 +0200 By: Esteban Lorenzano <estebanlm@gmail.com> Jenkins build #14826
法老版:[version] 4.0 #40614
谢谢。
编辑:我太蠢了,没想清楚.
发布于 2015-06-21 06:05:14
通过一次又一次地重新计算相同的代码,您实际上已经创建了一个无限循环。您可以看到,如果您调试代码并逐步完成它。将始终还原原始上下文,然后从#currentDo: send后面的第一个表达式开始计算。这正是延续应该做的事情:保存执行中的当前位置,稍后在那里重新启动。
发布于 2015-06-17 22:30:14
我没有要测试的Fedora,但是我在Ubuntu中试用了您的代码,使用了这个版本的Pharo:
wget -O- get.pharo.org/40+vm | bash
./pharo-ui Pharo.image
您的代码似乎工作正常:
如果此错误持续存在,您是否可以更具体地说明您正在使用的vm版本?
./pharo Pharo.image --version
你正在使用的法罗版本呢?:
./pharo Pharo.image printVersion
另外,给我们发送crash.dmp
文件会有很大帮助。
https://stackoverflow.com/questions/30903358
复制