What have you found for these years?

2009-05-14

system_timer!

後來 memcache-client 會建議你安裝 system_timer,
因為 ruby 1.8 的 green thread 沒辦法干涉 system call,
像是 socket 之類的東西,就不受到 timeout 影響(推測)

所以 1.8 之前,system_timer 可能是必須的。
但我發覺 system_timer 根本沒有如預期運作,非常詭異。
測試之後發現....

根本沒辦法用在浮點數上 @_@

ruby 內建的 timeout 用 sleep, 而這 sleep 是支援浮點數。
但 system_timer 卻不支援....
結果我設 0.2/0.5, 卻導致變成沒有 timeout, 我猜他大概轉成整數,
就變成 0, 而 0 表示沒有 timeout...

接著連接 kestrel 時就在上面卡了四分多鐘 @_@

只好改成 1 秒了... 總比四分鐘好。

updated 1:
另一方面,system_timer 也不支援多層的 timeout,
在 irb 裡面試用甚至會跳出整個 irb.
他果然沒辦法當成 ruby timeout 的 drop-in...

updated 2:
靠,灌錯了,system_timer 只有 1.0
SystemTimer 有 1.1.1, 上面的問題都修掉了。
雖然還是不支援浮點數,0.1 變成 1 秒,
至少比變成完全無效要來得好太多了

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0