著作一覧 |
P.247 誤)キューが満杯になったこと 正)キューが空ではなくなったこと
P.246
このリストは、読みにくく感じる(自分がコードを読む/書くときのスタイルとの問題のようだ)。
と思ってチェックしておいたのだが、今あらためて書こうとリストを読むと、なんの違和感もない。getAnd(Dec|Inc)rementを利用している個所とか、==を利用して上限/下限をチェックしているところ。
昨日の時点では、最初に読みとり後で加算(減算)というのがすんなり読めずに、次に比較しているところでひっかかったようだが、一日おいたら頭の中に最初に読み取りパターンとしてそのまま認識できるように醸されたのかも。
と思ったら思い出した。
if (size.getAndIncrement() == 0) mustWakeDequeuers = true;
サイズが0だったら吸い取り君たちを叩き起こす必要あり、と、AndIncrementの部分を読み飛ばして読めてしまったからだ。
とは言え、getしてからincrementするアトミックなコマンドの名前として正しいので(結果重視でincremnetというようなメソッド名にすると、アトミックな処理だという意味を失う)結局は慣れということかな。
慣れでははなく概念あるいはイディオムとして頭の中に根をおろしているかということかも知れない。
The Art of Multiprocessor Programming 並行プログラミングの原理から実践まで(Maurice Herlihy)ジェズイットを見習え |