Pharo 与 Smalltalk 的区别
Pharo differences with Smalltalk
我正在尝试使用 promises/futures 扩展 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
这些是错误:
[forkBackground] Messages sent but not implemented
[on:do:ensure:] Messages sent but not implemented
我的想法是 Pharo 与 Smalltalk 没有什么不同,或者该网站的解决方案是否也不适用于 Smalltalk?
尝试以下操作:
promiseLock := Semaphore new.
[
[[promiseValue := aBlock value] on: Error do: [:err | promiseError := err]]
ensure: [promiseLock signal]] forkAt: Processor userBackgroundPriority
想法是 ensure:
promiseLock
信号量将收到 signal
,即使 Error
减少了 aBlock
的计算。 forkAt:
的优先级值得商榷,但我会从某个地方开始,并根据需要进行调整。
我正在尝试使用 promises/futures 扩展 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
这些是错误:
[forkBackground] Messages sent but not implemented
[on:do:ensure:] Messages sent but not implemented
我的想法是 Pharo 与 Smalltalk 没有什么不同,或者该网站的解决方案是否也不适用于 Smalltalk?
尝试以下操作:
promiseLock := Semaphore new.
[
[[promiseValue := aBlock value] on: Error do: [:err | promiseError := err]]
ensure: [promiseLock signal]] forkAt: Processor userBackgroundPriority
想法是 ensure:
promiseLock
信号量将收到 signal
,即使 Error
减少了 aBlock
的计算。 forkAt:
的优先级值得商榷,但我会从某个地方开始,并根据需要进行调整。