////////////////////////////////////////////////////////////////////
/*

    KAB-studio.h


    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz

    送信日： 2004/10/04(Mon) No.276
    配信数： 2036
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                ２００４年１０月４日（月）の更新                */
http://www.kab-studio.biz/index.html

・ほとはー９の８追加！
　三人合体ホットハーブに「９の８ 切れない関係」を追加！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html

・Codian ちょびっと修正
　Codian の関数オブジェクト（前編）をちょっとだけ修正しました。 
transform<>() 関数のテンプレート引数に誤りがあったので。
　ダウンロード版も修正しました。
[ Codian ]
http://www.kab-studio.biz/Programing/Codian/index.html
[ 関数オブジェクト（前編） ]
http://www.kab-studio.biz/Programing/Codian/STL/02.html
[ ダウンロードルーム・ STL & iostream 入門 ]
http://www.kab-studio.biz/Freeware/index.html#STLiostream


////////////////////////////////////////////////////////////////////
/*                        ちょお普通な日記                        */
http://www.kab-studio.biz/nikki2/index.html

2004/09/26 (Sun)
　起きたら１２時。外伝２の主線をがーっと。仕上げは毎日する予定。でも
ぎりぎり……。Machician書いたりとか色々。情報通信系はお給料多い？　
１０連休終わり。来月からは？　そして転職のお誘いですか。

2004/09/27 (Mon)
　眠れなくておしごと眠い。めんどくさいバグ。悪魔様へるぷ☆が置いてな
い……。Machicianを平日毎日連載します。そしてスクリーン。そして
信用取引。

2004/09/28 (Tue)
　SELECT 文とバグ。まんがタイムきららMAX見つからず。外伝２の仕上げ、
時間かかる……。マドラックスとか最終回。派遣ルートとこれまでの道の
り。来月は客先代わります。

2004/09/29 (Wed)
　急遽派遣先に戻る。なんか無茶苦茶あやふやな状況。でも久々でちょっと
楽しい。そして買わなきゃよかったなぁ……。

2004/09/30 (Thu)
　現客先のおしごと最終日。最後に地雷を踏む。その他かなり散々。でも
このプロジェクトはちょっと楽しかった。明日からはヤバいらしい……。
最悪ほとはー１０月中お休みとか。ギャラクシーエンジェル最終回がかなり
良かった。そしてハード。そしてストップ高の理由。

2004/10/01 (Fri)
　派遣先ホンテンに行ってから客先へ。大変ではないけど……純粋につらい
所です。体力的に。おしごとはこれまでと同じ Java 。システムは全然違う
けど。 VB4 の Currency と Java の BigDecimal 。悪くないとこ。でも
疲れた……。そして２次の状況。そして三重派遣。

2004/10/02 (Sat)
　疲れが溜まってる。リアルアーケードPro来る。これでメルブラやろうか
なー。午後はのんびり。 Codian の指摘はすごく少ない。ハガレン最終回。
６時台のアニメ。 ER 全部買いそろえたいなぁ。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

■　第十一章　ファインダウト社　−３−

　布団の上であぐらをかいて、母の言葉を思い出す。
「両方取るのは無理、か……」
　現に、母と父は別居し、舞達だけが下界で生活していた。舞は、この場
所、ふたりを分け隔てた碧き泉は厭ましく思っていても、母のことは別段嫌
いではなかった。それでも、たびたび「家庭崩壊」という言葉は頭をよぎっ
ていた。
　まだ具体的なプランは立てられなくても、想像はできる、将来の「自分の
家庭」。そのイメージが、泉寄りの生活で崩れてしまう。
「……半年間だけって、だめなのかなぁ……」
　予言では、来年の春に何かが起きることになっている。その間だけ、今の
生活にどっぷりと浸かってみる。それもアリだと思う。でも、戻ってこれる
か、その自信はない。
　むしろ、戻ってこれないと確信している自分がいる。
「それはやめた方がいいと思うなー。舞、戻ってこれなくなっちゃうよ？」
　確信している人がもうひとり。
「……」
「……ねぇ、ひとつ確認しておきたいんだけど」
「何？」
「それってさ、あの朴って人、関係ある？」
「ない」
　舞は即答した。
「朴さんと、木村君ならどっちがいい？」
「……なんで木村君が出てくるのよ」
「振っといて何を」
「あー……」
　そんなことすっかり忘れていた、そんな表情に恭子はあきれた。
「今のあんたは、泉とかが恋人、って感じね」
「……」
　否定はしない。むしろ肯定したいくらいだった。
「そういえば、あそこで３人で何してたの？」
「何って、舞も触れたじゃない、結界」
「へ？」
　結界と、恭子と俊雄が、継ながらなかった。
                                                              (続く)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
　魔法の国からやってきたシーバリウ。
「あ、はい、今日から３ヶ月間、こちらにお世話になりに来ました」
「こちらって、どちらへ？」
「へ？」
　これからいったいどうなる！？

第１話 空から王子が降ってきた 好評連載中！
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Machician＋設定 最新一覧 ]
http://d.hatena.ne.jp/kab_studio/searchdiary?word=*%5BMachician
_______________________________________________________________[KCM]

////////////////////////////////////////////////////////////////////
/*                       #pragma twice                            */
http://www.kab-studio.biz/Programing/PragmaTwice/index.html

　Version 14.09
セマフォで排他処理

「前回はセマフォを使ったプログラムを紹介しました」
『ミューテックスと違ってバトンはふたつ、ってことだったね』
「というわけで、今回は実際にそれを試してみます。ミューテックスの時、
つまり Version 14.06 ( No.273 ) の時と同じように、 
ProcessA ProcessB ProcessC の３つのプロジェクトを用意して」
『ミューテックスの時のをそのまま使ってもいい？』
「もちろん。同じようにボタンを５つずつ作って」

Create()    // セマフォを作成します。
Open()      // セマフォを取得します。
Wait()      // セマフォを監視して待機状態に入ります。
Release()   // セマフォを手放します。
Close()     // セマフォを削除します。

「を呼ぶようにしてください」
『この辺も同じね』
「さて、では実際に試してみます。前回のプログラムでは」

// セマフォを作成します。
void Create()
{
    g_hSemaphore = CreateSemaphore( NULL, 2, 2, SEMAPHORE_NAME );
    TRACE( "%x\n", g_hSemaphore );
}

「としました。つまり、バトンの数は２、最初の空いている数もその２、と
いうことになります」
『バトンは２本ね』
「今、 ProcessA ProcessB ProcessC の３つのプロセスを使うので、当然ひ
とつ余ります」
『余ると？』
「余ると、バトンが空くのを待つことになります。余らなかったふたつのプ
ロセスは、バトンをもらったらすぐに処理をします」
『ん〜？』
「というわけで実際に試してみましょう。まず」

ProcessA::プロセス実行
ProcessB::プロセス実行
ProcessC::プロセス実行

「と、まぁ普通に３つともデバッグ実行してください」
『はーい』
「次に

ProcessA::Create()
ProcessB::Open()
ProcessC::Open()

「と、 ProcessA はセマフォを作成して、残りのふたつはそのセマフォを開
いてください」
『名前が同じだから、同じセマフォを開くんだね』
「そういうこと。これで準備はできました。それでは同期のテストを開始し
ます。まず、現在のバトンの状況はこうなっています」

バトン１：空き
バトン２：空き

『バトン２本とも空いてるわけね』
「次に」

ProcessA::Wait()

「と、 ProcessA はセマフォを監視してください」
『ほい。……あれ？　待たないよ？　あっという間に待機終了。しちゃった
よ？』
「それがセマフォ、ってこと。前回説明したでしょ」

○バトンの数が１以上：
　・バトンをもらって動作開始
　・バトンの数が１減る
○バトンの数がゼロ：
　・バトンがないので、バトンが空くまで待ちます。
　・バトンはゼロのまま

『ああ！　バトンは２本ある、そのうちの１本もらって動作開始、動作開始
ってことは待たないってことだから、 WaitForSingleObject() からすぐに
返ってきちゃうんだ！』
「そういうこと。だから、現在の状況は

バトン１：ProcessA 所有中
バトン２：空き
ProcessA::バトン１所有中（よって処理中）
ProcessB::何もしてません
ProcessC::何もしてません

「という状況」
『バトン１が ProcessA に渡って、 ProcessA はそのバトン受け取ってなん
かしてるはず、ってわけね』
「次に」

ProcessB::Wait()

「と、 ProcessB もセマフォを監視してください」
『これもバトン取っちゃうからすぐに返ってくるんだよね。うん、返ってき
た』
「現在の状況はこうなります」

バトン１：ProcessA 所有中
バトン２：ProcessB 所有中
ProcessA::バトン１所有中（よって処理中）
ProcessB::バトン２所有中（よって処理中）
ProcessC::何もしてません

「この状態では、バトンの空きがありません」
『２本とも使われてるわけね』
「イメージとしては、トラック２つの競技場を、選手ふたりがバトンを持っ
て全力疾走してるイメージ」
『全然疾走してないけど』
「さて、この例で行くと ProcessC はもうひとりの走者ということになりま
す。ですが」
『バトンがないから走れない！』
「そういうこと」

ProcessC::Wait()

「として、 ProcessC もセマフォを監視してください」
『ほい。お、今度は返ってこない！　ずっと待機開始。のままだ』
「現在の状態はこうです」

バトン１：ProcessA 所有中
バトン２：ProcessB 所有中
ProcessA::バトン１所有中（よって処理中）
ProcessB::バトン２所有中（よって処理中）
ProcessC::バトンが空くのを待っています

「バトンは２本しかありません。が、すでに ProcessA と ProcessB が持っ
ているため、 ProcessC はバトンが空くのを待っています」
『だから WaitForSingleObject() から返ってこないわけね』
「そこで、バトンをひとつ手放します」

ProcessA::Release()

「 ReleaseSemaphore() はセマフォのカウントを減らす、つまりバトンを返
す関数です」
『これを呼ぶと……あ、 ProcessC が待機終了。になった！』
「この瞬間を見てみましょう。まず、 ReleaseSemaphore() が呼ばれたこと
でバトンがひとつ空きます」

バトン１：空き
バトン２：ProcessB 所有中
ProcessA::何もしてません（バトン１を手放したため）
ProcessB::バトン２所有中（よって処理中）
ProcessC::バトンが空くのを待っています

「すると、一番最初に待機していたプロセスに、シグナルがオンになったこ
とが伝えられます」

バトン１：空き→→→→→→→→→→→→→→→→→
バトン２：ProcessB 所有中                      ↓
ProcessA::何もしてません                       ↓
ProcessB::バトン２所有中（よって処理中）       ↓
ProcessC::バトンが空いた！←←←←←←←←←←←

「そこで、 ProcessC はさっそくバトン１を取得します」

バトン１：ProcessC 所有中
バトン２：ProcessB 所有中
ProcessA::何もしてません
ProcessB::バトン２所有中（よって処理中）
ProcessC::バトン１所有中（よって処理中）

「バトンを受け取ったので監視は終了、処理を開始するわけです」
『なるほどねー。つまりさ、バトンをパスしたってことでしょ？』
「そういうこと。 ProcessC っていうランナーは ProcessA と同じコースで
待機していて、 ProcessA からバトンを受け取ったので全力疾走開始。 
ProcessA は代わりに走るのをやめたわけです」
『まさにリレーねー』
「実際のところ、ミューテックスもセマフォも〈バトンリレー〉をするため
の仕組みだから」
『そか、できて当然ってわけね』
「ただ、ミューテックスとセマフォって仕組みとか使い方が違うから」
『確かにこれは混乱するよね……セマフォのデフォルトのカウントとか』
「でもやりたいことは一緒。これをちゃんと理解できてればミューテックス
と同じように普通に使えると思うよ」

/*
    Preview Next Story!
*/
『次回はタイマーね。あれ？　でもタイマーって前に使わなかった？』
「タイマーって全部で３つくらいあるから」
『そのうちのひとつ？』
「そゆこと」
「というわけで次回」
＜ Version 14.10 タイマーを使おう！ ＞
『につづく！』
「ちなみに一番使わないタイマー」
『え”』


////////////////////////////////////////////////////////////////////
/*                ２００４年１０月１１日（月）の更新                */
http://www.kab-studio.biz/index.html

・ほとはーに１話追加
　三人合体ホットハーブに一話追加します。


////////////////////////////////////////////////////////////////////
/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.biz/nikki2/
・購読登録を解除したいときにはこのページで行なってください。
http://www.mag2.com/m/0000012198.htm
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://backno.mag2.com/reader/Back?id=0000012198
http://www.kab-studio.biz/Freeware/index.html#MailMagazine


////////////////////////////////////////////////////////////////////
/*
    KAB-studio.h
      Weekly Mail Magazine.
      Written by Kaburaya Seiden.
      http://www.kab-studio.biz/Info/MailMagazine/

    (C)KAB-studio 1999 - 2004 ALL RIGHTS RESERVED.
        http://www.kab-studio.biz/
        info@mail.kab-studio.biz
*/
////////////////////////////////////////////////////////////////////

