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

    KAB-studio.h


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

    送信日： 2004/09/27(Mon) No.275
    配信数： 2061
    発行元： まぐまぐ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

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

・ほとはー９の６追加！
　三人合体ホットハーブに「９の６ 最適な色」を追加！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


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

・１０月表紙壁紙追加！
　毎月恒例、新しい表紙壁紙です。
　……月が１０月になってるのは気にしないでください（汗）。
　ダウンロードは CG Gallery にて。
[ CG Gallery ]
http://www.kab-studio.biz/CG/Gallery/index.html#KAB_studio_200410_1024

・ほとはー９の７追加！
　三人合体ホットハーブに「９の７ ヒロインの苦悩」を追加！
[ 三人合体ホットハーブ ]
http://www.kab-studio.biz/Comic/HotHerb/index.html


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

2004/09/12 (Sun)
　表紙壁紙、描き上がらず……。集中してるとおなか空かない。かぶヘッ
ダー購読登録数が増えてきてます。Machician始めます。風雅、舞いと違っ
て１〜２年で終わらせる予定。

2004/09/13 (Mon)
　１７日〜２６日の１０連休。引き継ぎ用ドキュメント作り。ヨドバシで
えろげコーナー発見（爆）。君望フルコンプに３〜４日潰すのはなぁ。
ケーブルテレビは駄目でした……。

2004/09/14 (Tue)
　仕様変更がどばーっと。なぜに今頃……。ドンキホーテでチーズ購入。
プロジェクターのスクリーン。そしてスカパー！。うちは無理っぽいんで
す……。

2004/09/15 (Wed)
　バグと仕様変更ががーっと。バグは自分のせいだし。明日から１０連休。
帰りに丸の内オアゾへ。カレー高！　スープストックトーキョーで。ポスト
の前で祈る。そしてこれからの予定。

2004/09/16 (Thu)
　明日から１０連休。現実味ないけど。引き継ぎ用ドキュメントに説得力が
ない。バックアップ取って８時上がり。絢爛舞踏祭にもっとエステル分を！　
明日は液晶プロジェクターの設置。土日はほとはーと表紙壁紙。それ以降は
ほとはー外伝２を。洗脳され気味？　そして競売。儲かるん？

2004/09/17 (Fri)
　徹夜で片付け＆ルミナスプラス設置。午前中に液晶プロジェクター
EMP-TW200H とスクリーンの受け取り。プロジェクターいい感じだ。さすが
1500ルーメン。スクリーンはビーズ地、これが失敗だった……。ヨドバシが
悪い（爆）。そのヨドバシでマット地のチェック。メロンブックスでネギま
とか購入。密度の高い１日だった……。１０月以降の予定とか。

2004/09/18 (Sat)
　なんか疲れてる。今日はほとはーのセリフを入れただけ。ヨドバシ川崎店
へ歩いて行ってみる。途中でライゼボックスがどんなか見てみる。
スクリーンは取り寄せだった。エイリアン２購入。そして競売の仕組み。

2004/09/19 (Sun)
　表紙壁紙描き上がったけどだいぶアレだ……。製作工程。そして雑誌の分
解とスキャニング。

2004/09/20 (Mon)
　のんびりモードの１日。ゆめりあ６巻のオーディオコメンタリーを聴いた
りとか。Machician２話を書いたり。Machicianの更新日を変えようかな。
バックアップが２枚に。そして雑誌の省スペース化ｘ２。

2004/09/21 (Tue)
　風邪かも。洗濯して、あとほとはー外伝２を。１ページ完成させて、工程
や線の細さ、フォントをチェック。混植はやめた方がいいかな？　Machician
本編を３話の第１回まで書く。激★店がいい感じだ。今日は無駄な一日……
のような気も。

2004/09/22 (Wed)
　マット地のスクリーンEF-60AM来る。やっぱアニメにはマット地だ。
ほとはー９話のプロット完成。ダビングをがこがこと。かぶろぐに装備一覧
を。レイニー止め。そしてビーズ地。

2004/09/23 (Thu)
　ほとはー９の７。表紙の修正。ほとはー外伝２の設定起こし＆主線描き。
テレビは絢爛舞踏祭の最終回とか。そして不動産とか。

2004/09/24 (Fri)
　アマゾンからＤＶＤ受け取って、横浜に行ってディスプレイ分配器とか
タイムスプリッターとか購入。夜に徹ゲー。ハガレンが面白かった。７時半
に家に帰って寝て今に至る。そして独自ドメイン。そして誰のん？

2004/09/25 (Sat)
　部屋の片付けとか表紙壁紙作りとか。「表紙壁紙をほとはーに戻す」のは
やめに。テレビはハガレンとＮスペ。非効率だった１０連休……。


////////////////////////////////////////////////////////////////////
/*                         風雅、舞い                             */
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.08
セマフォを使ってみる！

「前々回はミューテックスを使用してみました」
『バトンをパスする、って感じだったね』
「今回はセマフォという同期オブジェクトを使用してみます」

セマフォ （ Semaphore ）

『〈信号機〉って意味なんだよね』
「そうなんだけど、それほどそこにこだわらなくてもいいかも。セマフォは 
Version 14.04 ( No.271 ) で説明したように」

・バトンが複数個ある

「のが特徴」
『ミューテックスはひとつ、セマフォは複数』
「バトンの例でそのまま説明するなら」

・ミューテックス：１コースのみ
・セマフォ　　　：コースが複数ある

「つまり、セマフォで４つバトンを用意するとすれば、４コース分用意でき
て、その場合、同時に走れる選手の数は？」
『４人？』
「そういうこと。つまり、〈バトンの数だけ同時に選手が走られる〉ってこ
とです」
『ミューテックスはひとつだったけど、セマフォは複数……』
「ま、実際に例を見てみようか。ミューテックスで作った ProcessA とかを
流用して」


namespace B1
{

HANDLE g_hSemaphore = NULL;
const char *const SEMAPHORE_NAME= "ProcessesSemaphore";

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

// セマフォを取得します。
void Open()
{
    g_hSemaphore
         = OpenSemaphore
            ( SEMAPHORE_ALL_ACCESS, FALSE, SEMAPHORE_NAME );
    TRACE( "%x\n", g_hSemaphore );
}

// セマフォを監視して待機状態に入ります。
void Wait()
{
    TRACE( "待機開始。\n" );
    DWORD dwResult = WaitForSingleObject( g_hSemaphore, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "タイムアウト。\n" );
    }
    else
    {
        TRACE( "待機終了。\n" );
    }
}

// セマフォを手放します。
void Release()
{
    LONG lCount = 0;
    ReleaseSemaphore( g_hSemaphore, 1, &lCount );
    TRACE( "現在のカウント： %d\n", lCount );
}

// セマフォを削除します。
void Close()
{
    CloseHandle( g_hSemaphore );
}

}

「というプログラムを書いてください。各関数は、前と同じようにボタンの
イベントハンドラ等から呼ぶようにしてください」
『はーい』
「では、ひとつずつ見ていきます」

HANDLE g_hSemaphore = NULL;
const char *const SEMAPHORE_NAME= "ProcessesSemaphore";

「これはミューテックスの時と同じ」
『セマフォのハンドルと、セマフォの名前ね』
「では次、今回一番大事なセマフォの作成箇所」

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

「セマフォは CreateSemaphore() という API で作成します」
『ってゆーかミューテックスとほとんど同じね』
「第１引数はセキュリティ関係なので NULL でＯＫ。第４引数はミューテッ
クスと同じくセマフォの名前を渡してください」
『ってことは、第２引数と第３引数が重要？』
「そういうこと」

    g_hSemaphore = CreateSemaphore
        ( NULL
        , 2                    // カウントの初期値。
        , 2                    // カウントの最大値。
        , SEMAPHORE_NAME 
        );

『？　第２引数の〈カウントの初期値〉って 0 じゃないの？』
「そこがポイント。まず、一番重要なのは」

・セマフォで管理するカウント＝空いているバトンの数

「ってこと」
『空いているバトン……つまり、誰も持って走ってないバトンの数、ってこ
と？』
「そういうこと。このセマフォを作る段階では、まだなにも処理をしていま
せん。ということは、空いているバトンの数は？」
『 2 ！』
「というわけ」
『だから初期値は 2 なのねー』
「さて、ここでは２個のバトンを用意しただけ。実際にバトンを〈持つ〉必
要があります。そのためにはまず」

// セマフォを取得します。
void Open()
{
    g_hSemaphore
         = OpenSemaphore
            ( SEMAPHORE_ALL_ACCESS, FALSE, SEMAPHORE_NAME );
    TRACE( "%x\n", g_hSemaphore );
}

「でセマフォのハンドルを取得します。ただし、この段階ではまだバトンを
持っていません」
『ややこしい……』
「セマフォとバトンをごっちゃにしちゃってるからね……まぁ、たとえるな
らバトンが置いてあるテーブルにまで来た、っていう状態かな」
『よけいわかんない』
「う”……さて、それではバトンを所持します」

// セマフォを監視して待機状態に入ります。
void Wait()
{
    TRACE( "待機開始。\n" );
    DWORD dwResult = WaitForSingleObject( g_hSemaphore, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "タイムアウト。\n" );
    }
    else
    {
        TRACE( "待機終了。\n" );
    }
}

『あ、監視するのがバトンを持つってこと？』
「そういうことになります。この WaitForSingleObject() を呼ぶと、カウ
ントによってセマフォの動作が異なります」

○セマフォのカウントが１以上：
　・シグナルはオン
　・カウントが１減る
○セマフォのカウントがゼロ：
　・シグナルはオフ
　・カウントの増減はなし

『？？？』
「これをわかりやすく書くと」

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

『おお！』
「つまり、カウントが 0 の時には WaitForSingleObject() は監視を続けま
す。また、カウントが 1 以上ならすぐに返ってそのまま処理を続けられま
す」
『バトンを持って処理をするってわけねー』
「そして、処理が終わったらバトンを返します」

// セマフォを手放します。
void Release()
{
    LONG lCount = 0;
    ReleaseSemaphore( g_hSemaphore, 1, &lCount );
    TRACE( "現在のカウント： %d\n", lCount );
}

「 ReleaseSemaphore() は WaitForSingleObject() で減らしたセマフォの
カウントを逆に増やします」
『つまり、バトンを返すってこと？』
「そういうこと。ただ、さっきの WaitForSingleObject() で待っている場
合には、バトンがひとつ空くから」

○バトンの数が１以上：
　・バトンをもらって動作開始
　・バトンの数が１減る

「となって WaitForSingleObject() から返ります」
『つまり、バトンを手渡したってことね』
「そういうこと」

/*
    Preview Next Story!
*/
『相変わらず話だけ聞くとわかりやすいね』
「話は単純だからね」
『……人騙すの得意じゃない？』
「ななな、何を？？？」
『いやなんとなく』
「ちゃんと裏付けも説明するんだから、騙してるわけじゃないよ」
『ホントに〜？』
「というわけで次回」
＜ Version 14.09 セマフォで排他処理 ＞
『につづく！』
「というわけでプログラムでちゃんと証明してみます」
『なら騙されっぱなしでもいいかも』
「なんでー？」


////////////////////////////////////////////////////////////////////
/*                ２００４年１０月４日（月）の更新                */
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
*/
////////////////////////////////////////////////////////////////////

