FLAGS

MENU

NOTICE

2009年7月12日日曜日

(プログラムネタ)排他ロック (mixi05-u459989-200907120519)

ミクシ内で書かれた旧おかあつ日記を紹介します。
(プログラムネタ)排他ロック
2009年07月12日05:19
排他制御(ロック)のいろいろ

・ロックとは

ロックとは、ある限られた数のリソースを複数のスレッドから利用するときに競合が起こらないようにするためのコンピューター上の機構である。 ここでいうスレッドとは人のようなもので、リソースというのはたとえばトイレのようなものだ。 そして競合というのはすでにトイレに人が入っているのにドアを開けてしまったような状態の事を指す。

そういうことにならないように、トイレのドアにはロックをかけるのがマナーである。 トイレのドアにはロックをかけるのがマナーであるのと同じように、コンピューター上のファイルなどの資源を利用するときもロックをかけるのがマナーである。 そうしないと複数のスレッドが同時に操作してしまい、ファイルが壊れてしまったりすることがある。

これがプログラミングでのロックである。



・Read/Write Lock とは

たとえばこういうことである。

その居酒屋のトイレには、個室が残念ながらひとつしかなかった。 しかしその個室には洋式便器がひとつついているほか、いくつかの男性用便器も備えてあった。 店はかなり繁盛していたがトイレが明らかに足りなかった。 毎日トイレには行列が出来ていた。 そこで店主は一案を考えた。

どうせ男性は他人のものを見ても見られても大して気にするわけではない。 であれば、男性が並んでいるとき、そのときに既にトイレに入っている人が男性であれば、入ってしまって用をたしてしまえばいいだろう、という事だった。 そうすればトイレを増設することなく多少混雑を緩和できるかもしれない。

このようなことはコンピューターの世界でも発生する。 ファイルを読み込むときにいちいちファイルをロックするとファイルの読み込みが混雑してしまう。 読み込むだけであれば他の処理と共有して読んでももかまわないだろう。

これをコンピューターの世界では read lock と呼ぶ。

そして、女性はトイレに入っている男性が全員出た後、トイレに入ってロックをかける。 女性がトイレに入っている間は男性は入ってはいけない。

このようなこともコンピューターの世界ではしばしば発生する。 たとえば、ある処理がファイルを書き込むときは、その書き込みしている経過は他の処理に見せたくない。

これをコンピューターの世界では write lock と呼ぶ。



その他...

・ mandatory / advisory Lock とは

  File Locking
  http://en.wikipedia.org/wiki/File_locking

・ Dirty Read その他
  
  Isolation (Transaction)
  http://en.wikipedia.org/wiki/Isolation_%28database_systems%29

Lock
http://en.wikipedia.org/wiki/Lock_%28computer_science%29


Win32 CreateFile ( MSDN )
http://msdn.microsoft.com/en-us/library/aa363858%28VS.85%29.aspx

Win32 OpenFile ( MSDN )
http://msdn.microsoft.com/en-us/library/aa365430%28VS.85%29.aspx

NFS
http://en.wikipedia.org/wiki/Network_File_System_%28protocol%29

SAMBA
http://en.wikipedia.org/wiki/Samba_%28software%29

WebDAV
http://en.wikipedia.org/wiki/WebDAV
http://www.studyinghttp.net/history.shtml#WebDAV



今日は夕方までああでもないこうでもないと、相変わらず Locking と interning について調べていた。 疲れたので今日は食事をしてからサウナに行った。サウナで4時間ぐらい考え事をした。

アドバイザリロックとマンダトリロックの違いがすっと頭に入るようになった。 他にもいくつかアイデアが浮かんだ。

コメント一覧
 
出展 2009年07月12日05:19 『(プログラムネタ)排他ロック』

著者オカアツシについて


小学生の頃からプログラミングが趣味。都内でジャズギタリストからプログラマに転身。プログラマをやめて、ラオス国境周辺で語学武者修行。12年に渡る辺境での放浪生活から生還し、都内でジャズギタリストとしてリベンジ中 ─── そういう僕が気付いた『言語と音楽』の不思議な関係についてご紹介します。

特技は、即興演奏・作曲家・エッセイスト・言語研究者・コンピュータープログラマ・話せる言語・ラオ語・タイ語(東北イサーン方言)・中国語・英語/使えるシステム/PostgreSQL 15 / React.js / Node.js 等々




おかあつ日記メニューバーをリセット


©2022 オカアツシ ALL RIGHT RESERVED