summaryrefslogtreecommitdiff
path: root/fml/doc/ja/tutorial
diff options
context:
space:
mode:
authorfukachan <fukachan>2003-04-12 15:20:01 +0000
committerfukachan <fukachan>2003-04-12 15:20:01 +0000
commit18caa6a13bd70d87d2a03180bf77155cd9361130 (patch)
treebecf04d0e79354d0b5af3bfea35eb3cecd360649 /fml/doc/ja/tutorial
parent380ed4eaac0518cadb42ac39862735e2d55a6dad (diff)
downloadfml8-18caa6a13bd70d87d2a03180bf77155cd9361130.tar.gz
fml8-18caa6a13bd70d87d2a03180bf77155cd9361130.tar.bz2
fml8-18caa6a13bd70d87d2a03180bf77155cd9361130.zip
add lock overview and todo
Diffstat (limited to 'fml/doc/ja/tutorial')
-rw-r--r--fml/doc/ja/tutorial/book.sgml7
-rw-r--r--fml/doc/ja/tutorial/include/chapters.ent3
-rw-r--r--fml/doc/ja/tutorial/internals/lock.sgml77
3 files changed, 84 insertions, 3 deletions
diff --git a/fml/doc/ja/tutorial/book.sgml b/fml/doc/ja/tutorial/book.sgml
index 4a7926d6..df46d104 100644
--- a/fml/doc/ja/tutorial/book.sgml
+++ b/fml/doc/ja/tutorial/book.sgml
@@ -2,7 +2,7 @@
This is an sgml using DocBook dtd. Use sgmltools version 2.0.x or above
to generate various output formats.
-$FML: book.sgml,v 1.52 2003/03/09 08:29:09 fukachan Exp $
+$FML: book.sgml,v 1.53 2003/03/12 00:18:29 fukachan Exp $
-->
<!doctype book public "-//FML//DTD DocBook V3.1-Based Extension//EN" [
@@ -155,8 +155,11 @@ $FML: book.sgml,v 1.52 2003/03/09 08:29:09 fukachan Exp $
<!-- フック -->
&chapter.hook;
- <!-- その他 -->
+ <!-- バーチャルドメイン -->
&chapter.virtual;
+
+ <!-- その他 -->
+ &chapter.lock;
&chapter.db;
&chapter.db.thread;
&chapter.dbms;
diff --git a/fml/doc/ja/tutorial/include/chapters.ent b/fml/doc/ja/tutorial/include/chapters.ent
index 15ae12d3..b25425ff 100644
--- a/fml/doc/ja/tutorial/include/chapters.ent
+++ b/fml/doc/ja/tutorial/include/chapters.ent
@@ -1,5 +1,5 @@
<!--
- $FML: chapters.ent,v 1.66 2003/03/09 08:29:10 fukachan Exp $
+ $FML: chapters.ent,v 1.67 2003/03/12 00:18:30 fukachan Exp $
-->
<!entity versin "1.1">
@@ -129,6 +129,7 @@
<!entity chapter.config.cf SYSTEM "internals/config.cf.sgml">
<!entity chapter.restriction SYSTEM "internals/restriction.sgml">
<!entity chapter.credential SYSTEM "internals/credential.sgml">
+<!entity chapter.lock SYSTEM "internals/lock.sgml">
<!entity chapter.virtual SYSTEM "virtual/chapter.sgml">
diff --git a/fml/doc/ja/tutorial/internals/lock.sgml b/fml/doc/ja/tutorial/internals/lock.sgml
new file mode 100644
index 00000000..4a28c7f8
--- /dev/null
+++ b/fml/doc/ja/tutorial/internals/lock.sgml
@@ -0,0 +1,77 @@
+<!--
+ $FML$
+-->
+
+
+<chapter id="lock">
+ <title>
+ ロック
+ </title>
+
+
+<sect1 id="lock.overview">
+ <title>
+ ロックの概要
+ </title>
+
+<para>
+ながらく giant lock だったが、2002/03 に giant lock をなくした。
+</para>
+
+<para>
+Mail::Delivery 関連はメンバーリストにアクセスするので、いろいろありそう。
+でも、Mail::Delivery::Queue は見るだけ (mailq コマンド)か、並列操作可
+能なものだけなので、ロックは考えなくて良いはずです。
+</para>
+
+<para>
+一方、Mail::Delivery::SMTP の操作の際にはメンバーリストのロックが必要です。
+現在は、
+Mail::Delivery::SMTP を呼び出す FML のクラス(
+実は FML::Send と FML::Process::Delivery の2箇所しかない
+)がロック処理をしています。
+</para>
+
+<para>
+そして、write lock とは限らないが、一般に map を使うモジュールには
+ロックが必要です。write が必要とは限りません。
+たとえば
+FML/Command/UserControl.pm
+や
+FML/Command/Auth.pm
+には write lock が必要だが、
+FML/Credential.pm
+には read lock だけでよさそう。
+</para>
+
+</sect1>
+
+
+<sect1 id="lock.todo">
+ <title>
+ TODO
+ </title>
+
+<para>
+*_maps をよぶまえには MUTEX ロックをする。
+いや、やりすぎかもしれんが
+</para>
+
+<para>
+メンバーリストへ IO::Adapter をかます時に、
+READ,WRITE LOCK がほしい。
+<footnote>
+<para>
+READ ロックは不要か?いや、だめだろ
+chaddr の途中で sleep したら敗けやから;)
+</para>
+</footnote>
+perl thread をつかえばできるけど、
+汎用的な実装はかなりむつかしいぽい;)
+</para>
+</para>
+
+</sect1>
+
+
+</chapter>