[英]Creating a key value message in Smalltalk/Pharo that take blocks as argument
[英]Pharo differences with Smalltalk
我試圖用承諾/未來擴展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:
的優先級是有爭議的,但我會從某處開始,並根據需要進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.