From: Masaki Matsushita Date: 2011-03-08T16:01:39+09:00 Subject: [ruby-dev:43331] [Ruby 1.9 - Feature #4483] PStoreをデフォルトで複数のスレッドから扱えるようにしたい Issue #4483 has been updated by Masaki Matsushita. PStoreはRubyのオブジェクトを外部ファイルに格納する為のクラスな訳ですから、あるスレッドがトランザクションを実行中に別のスレッドがトランザクションに入ろうとした場合に、整合性を保つ為に同期する理由はあっても、例外を投げる理由はないのではと考えました。 そこで第2引数を削除したパッチを添付したのですが、確かにいきなり第2引数をなくしてしまうというのはやりすぎだったかも知れません。 それと、私が嬉しいかどうかをこういう場で引き合いに出したのは正しくなかったと思います。 Shota Fukumoriさんの案に賛成します。 ただ、thread_safe = trueとした場合でも、PStore.newに第2引数を与えずにnested transaction例外を想定しているコードには影響してしまいますね。 ---------------------------------------- Feature #4483: PStoreをデフォルトで複数のスレッドから扱えるようにしたい http://redmine.ruby-lang.org/issues/4483 Author: Masaki Matsushita Status: Open Priority: Normal Assignee: Category: lib Target version: PStoreは、デフォルトでは他のスレッドがトランザクションを実行中にトランザクションに入ろうとすると例外nested transactionを発生させます。 initialize時に第2引数が真であれば、別のスレッドがトランザクションから抜けるまで待つようになりますが、 PStoreの用途から考えると、わざわざ引数にそのような指定をしなくても例外を投げずに待ってくれた方が嬉しいと思うのですが、いかがでしょうか。 PStore.newの第2引数を削除し、別のスレッドがトランザクションを実行中でもデフォルトで例外を投げずに待つようにしたpstore.rbと、 それに合わせて改変したtest_pstore.rbのパッチを添付します。 -- http://redmine.ruby-lang.org