最近のトラックバック

2008年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

« ch04: ★witness module | メイン | ch04: ★processor affinity の訳語 »

ch04: ☆☆☆lock manager

98ページ、"Lock Manager Locks" の項目の中でどうもうまく解釈できない部分がある。

排他要求のところには、こうある:

Request exclusive: Stop further shared locks when they are cleared, grant a pending upgrade (see following) if it exists, and then grant an exclusive lock.

排他要求: それ以上の共有ロックを停止し、待機中にアップグレード要求があればそれを許可し、その後に排他ロックを許可する。

その下のアップグレード要求の所にはこうある:

Request upgrade: The thread must hold a shared lock that it wants to have upgraded to an exclusive lock. Other threads may get exclusive access to the resource between the time that the upgrade is requested and the time that it is granted.

アップグレード要求: すでに共有ロックを取得しているスレッドが、それを排他ロックにアップグレードする。アップグレード要求を出してからそれが許可されるまでの間に、別のスレッドがその資源に対する排他的アクセスを得る可能性がある。

最初の説明を読むと、誰かが共有ロックしているところに排他要求をするとブロックして、ブロック中にアップグレード要求があるとそっちを先に許可すると読める。

一方で、下の説明を読むと、共有ロックしているところにアップグレードをかけると、そこに排他要求を出していた方が先にロックを取得すると読める。

矛盾しているような気がするのだが、解釈がどこかおかしいのか?

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/827706

このページへのトラックバック一覧 ch04: ☆☆☆lock manager:

コメント

原本を持っていないので、まわりの文脈は見えませんが、後者の説明文中での排他的アクセスとは、他のスレッドのアップグレード要求によるものを含んでいるので、そのような説明になっていると思います。

すなわち、二つのスレッドが平行してアップグレード要求を行うと、順番に grant されます。この場合、後から grant されたスレッドからみると、自分の共有ロックが解除されて、他の (アップグレードを要求した) スレッドが排他アクセスを行い終わった後、自分が排他ロックを取得したように見えます。

なるほど。そういえばそうです。読みが足りませんでした。

ちなみに、この後に排他的アップグレード要求の説明があり、それを使うとすでにアップグレード要求しているスレッドがあると失敗することになっています。

とりあえず、訳文には問題ないと考えていいということですかね。

コメントを投稿

Powered by TypePad