2
是否有可能檢索創建當前光纖的光纖?如果我能夠在創建新光纖時獲得這些信息就足夠了。紅寶石:獲取光纖父母
猴子修補Fiber#new
不起作用,因爲調用Fiber#current
會導致「未初始化光纖」錯誤。
是否有可能檢索創建當前光纖的光纖?如果我能夠在創建新光纖時獲得這些信息就足夠了。紅寶石:獲取光纖父母
猴子修補Fiber#new
不起作用,因爲調用Fiber#current
會導致「未初始化光纖」錯誤。
我終於找到了一種讓它工作的方法。如果我們重新定義initialize
,它會失敗,因爲內部不會初始化光纖。然而,有可能別名,創建一個新的,然後運行舊:
class Fiber
alias_method :old_init, :initialize
def initialize
old_init
@parent = Fiber.current
end
def parent
@parent
end
end
由於Fiber.current
不會改變,直到我們在光纖執行resume
,我們可以放心地複製在參考初始化。
現在我們可以問系統「誰是你的爺爺?」 Fiber.current.parent.parent
。