From: SASADA Koichi Date: 2011-05-11T23:24:51+09:00 Subject: [ruby-dev:43529] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える  ささだです. (2011/05/11 22:54), Yukihiro Matsumoto wrote: > In message "Re: [ruby-dev:43527] Re: [Q] thread->interrupt_flag が適切に排他制御されていないように見える" > on Wed, 11 May 2011 22:52:36 +0900, KOSAKI Motohiro writes: > > |しばらく考えたところ、書き込み側で atomic ops 使えば十分という気がしてきました。 > |それなら、readerは速度低下0なのでパフォーマンス問題がおこりようがないし。 > |Linuxでしかテストしてませんが、こんなもんでどうでしょうか? > > コミットして試しましょうよ。non-Linuxの方、trunkをテストして > くださいませんか?  この問題はちょっと特殊なので,「テストして通ったらOK」なものではないと 思います.以下,理由. 1. 再現するためのテストがない  今回の問題は,あるレアケースにおいて競合の問題が起こりうる,という小崎 さんの指摘に寄ります.ただし,レアケースであるため,必ず再現するテストは ありません.これがきちんと正しく治っているかどうかの判断するためには,無 理矢理そういうシチュエーションを起こすテストを考えるか,コードを見て確認 するしかないと思います. 2. GCC/Windows 以外のプラットホームでは解決していない  今回のパッチは,gcc 拡張,もしくは Windows の atomic API を用いるもの になっています(ちなみに,rb_atomic_t は,サイズ指定は含めなくていいんだ ろうか).そのため,これらをサポートしていないプラットホームでは解決しな いんでないかなー,などと思います.ただ,1 の理由でそれに気づく可能性は少 ないのではないかと思います.   これは,どこまで頑張るか,って話だとは思うのですが. -- // SASADA Koichi at atdot dot net