multi-threaded and side-effect (2)
後來又翻到 ruby-core 上面討論 require 的 thread-safety 問題,
然後又翻了點關於 locking 的討論與文章,尤其是這一篇,
Programming with POSIX(R) Threads 的作者 David Butenhof
所寫的一小段關於 recursive mutexes:
Re: recursive mutexes
總有種越看越恐怖的感覺,當我們提出一個解決辦法,進而就會衍生另一個問題,
還有個什麼鬼 livelock... 不禁讓我覺得,使用 mt 大概必然要考慮以下:
1. 沒有過於複雜的交錯存取
2. 只使用 scoped lock. 例如 C++ auto(stack) object,
ensure/finally block, etc.
3. 不使用 recursive mutex...
只要違反其中一項,或許就該考慮重新設計程式架構,
不然錯路會越走越深... 當然,如果只是要應急的話,那又是另一回事。
或許 locking 要當作大絕招,而 recursive mutex 更是大絕招中的大絕招 @_@
concurrency 應該還有其他更好的路可以走,不需要把複雜度弄到那麼誇張。
好的設計應該是抽象而單純,而非愚笨又複雜。
mac firefox 又沒辦法打中文了.... 真是有夠煩的。
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.