【问题标题】:Pharo differences with SmalltalkPharo 与 Smalltalk 的区别
【发布时间】:2018-04-18 23:14:22
【问题描述】:

我正在尝试通过承诺/未来来扩展 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?

【问题讨论】:

  • 关于“Pharo 与 Smalltalk 没有什么不同”... Smalltalk 现在更像是一种想法。许多方言甚至不共享相同的语法,更不用说 API/标准库了。

标签: promise future smalltalk pharo


【解决方案1】:

尝试以下方法:

promiseLock := Semaphore new.
[
  [[promiseValue := aBlock value] on: Error do: [:err | promiseError := err]]
    ensure: [promiseLock signal]] forkAt: Processor userBackgroundPriority

这个想法是ensure:promiseLock 信号量将收到signal,即使Error 减少了aBlock 的评估。 forkAt: 的优先级值得商榷,但我会从某个地方开始,并根据需要进行调整。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多