Cryolite が C++0x の 1.10 を読み終えたようです.
泣いて喜ぶ……だと? ククククク,Cambridge の連中が rigorous な形式化を出してきたのは私の『よげんのしょ』に記載された予定調和に過ぎぬ.それよりも release sequence の定義(と CA 12, GB 9)が明確になったことに歓喜せよ!!!
2010-08-29 19:23:20N3132 の「‘Maximal’ in release sequences」の部分を読む限り, N3132 の著者らは現行の規格 (N3126) の release sequence の定義は誤り(良く言って「誤解を招く書き方」)だという認識のようで.
2010-08-29 19:29:43@Cryolite そのrelease sequenceですが、今あらためてn3092を読み直すと、箇条書き1項めの "the release" を我々が読み間違えただけだったような気がしてきました。
2010-08-29 20:09:41@Cryolite first operationが"a release"とは書いてありますが、subsequent operationについては良く読むとreleaseであるとは言っていません。
2010-08-29 20:16:14@Cryolite "the same thread that performed the release"とは書いてありますが、この"the release"は"the first operation"のことですよね。
2010-08-29 20:17:41あーっと,そうか. "the release" は "the first operation is a release" の first operation を指すのか.ということは,後続は relax や CAS を含めて全部 release sequence に含まれるのな.
2010-08-29 20:17:48@yamasa って先に書かれてしまっていました.しかし依然として release が複数連続する場合は "maximal contiguous" という言葉と 1.10/7 の記述から,後続の release と s.w. しないように読めるのは変わらないので変だ,と.
2010-08-29 20:20:45@Cryolite 確かにmaximal contiguousについては、以前の記述は変ですね。そこら辺りが明確になったので、今回の修正は嬉しいです。
2010-08-29 20:25:12そうか, 1.10/6 は何か変だな~と思っていたけれど,「relaxed な操作で書かれた値を acquire で読めたなら, relaxed 操作を行ったスレッド内で, relaxed 操作から逆にたどっていって最初の release と s.w. する」と書きたいのかこれ.
2010-08-29 20:26:07ふ……ふはは,ふはははは! 読めた……読めたぞ!! 1.10 が…… 1.10 が読めたぞ!! 1.10 においてほぼ唯一にして最大の疑問が解けた今,私はようやく「1.10 を読みました」と言える身に!!!
2010-08-29 20:32:38