<function>
<fname property="Applicative Order / LEVEL: 0 ">
Lock
</fname>
<prototype>
LISP形式

(Lock string-exp)

XML形式

<Lock type="read/write"> string-exp </Lock>
</prototype>
<prototype>
C関数宣言
</prototype>
<explanation>
string-expを名前とするロックを生成し、ロックする。すでに、コマンドを発行したコネクションによってLockされている場合は、ロックのカウントを1増やす。 

すでに他のコネクションによってロックされている場合は、そのコネクションとこのコネクションが両方ともtype="read"でロックしている場合以外は、このコネクションのLock関数の処理はロックされる。ロックしているコネクションがUnlockを発行した時点で処理が先にすすむ。 

ロックしているコネクションが切れると自動的にロックは解除される。 

ロックサーバへのアクセスは、同一サイト内からのみに限定することを奨励する。なぜならば、ロックしているコネクションが、物理レイヤ、ネットワーク・レイヤで接続が切れた場合、TCPコネクションは永遠に残ることになり、ロックされ続けることになる。これを解消するために、サーバへの接続のタイムリミットを設定することも出来るが、こんどは、ロックが勝手に解除されるおそれがある。この問題はネットワークを介する以上避けられない問題である。 
</explanation>
</function>
