Gak*_*kuo 5 smalltalk future pharo promise
我试图用承诺/未来扩展Pharo.我遇到了这个网站http://onsmalltalk.com/smalltalk-concurrency-playing-with-futures.它在Smalltalk实现期货.但是,当我将这部分代码复制到Pharo上时,我遇到了一些错误:
value: aBlock
promiseLock := Semaphore new.
[ [ promiseValue := aBlock value ]
on: Error
do: [ :err | promiseError := err ]
ensure: [ promiseLock signal ] ] forkBackground
Run Code Online (Sandbox Code Playgroud)
这些是错误:
[forkBackground] Messages sent but not implemented
[on:do:ensure:] Messages sent but not implemented
Run Code Online (Sandbox Code Playgroud)
我认为Pharo与Smalltalk没有什么不同,或者网站的解决方案是否可能与Smalltalk不兼容?
请尝试以下方法:
promiseLock := Semaphore new.
[
[[promiseValue := aBlock value] on: Error do: [:err | promiseError := err]]
ensure: [promiseLock signal]] forkAt: Processor userBackgroundPriority
Run Code Online (Sandbox Code Playgroud)
我们的想法是ensure:
,即使减少评估,promiseLock
信号量也会收到信号量.优先考虑是有争议的,但我会从某个地方开始,并根据需要进行调整.signal
Error
aBlock
forkAt: