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

    KAB-studio.h


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

    MF 2004/12/20(Mon) No.287
    zMF 2036
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
/*                QOOSNPQQOij̍XV              */
http://www.kab-studio.biz/index.html

EقƂ́[O`RAX^[g
@Ol̃zbgn[ůO`RAy^ṼLNz̃vy[W
܂B܂g͂ȂłA{AڂȂ̂ł΂҂
ccB
[ Ol̃zbgn[u O`R ^ṼLN ]
http://www.kab-studio.biz/Comic/HotHerbA3/index.html


////////////////////////////////////////////////////////////////////
/*                        储ʂȓL                        */
http://www.kab-studio.biz/nikki2/index.html

2004/12/12 (Sun)
@ߑO͐󂵂ēdTCY𔃂蕞BS܂
[ƁBԔhaЂɋĂ݂Bgbv̊חBMachician
̃CXgBđݗB

2004/12/13 (Mon)
@SQtAłQo߃XbLAxނĂƂȂ񂾂
ccƎvMijBr[͌Ǌ֌WȂH@ׂɊӁB
Ă킪܂܁B

2004/12/14 (Tue)
@ƂƃNX}XȈBvqƎO}ځBwZ̐搶ɁA
~肽BĊP~ߖBē]ETCgBăXgXB

2004/12/15 (Wed)
@hLĝ܂Ƃ߂Ƃڍא݌vNƂBhbЂ̐l
vp[ƂẴ|WV߂B NHK C^r[󂯂B
ċNȂB

2004/12/16 (Thu)
@Ƃ͏ڍא݌vNBOh}{E\t@[͐Q̂Ɍ
ĂȂH@KURAU ŏI͂܁ccBNUԂI@P͑OXv
WFNgŖZBČ_͈͓̎dBĔNȂ̎dB

2004/12/17 (Fri)
@ڍא݌vNBj͂POKvWFNgɁB-HIME
CĂBNUԂBQ Fate OB mixi B

2004/12/18 (Sat)
@炨łB˕wEJ[̃o[OŃno[OJ[B
ubNXŃR~bNXAۈŃX[cAhoVŃn[hfBXNw
BAĂ͂̂т肵ăn[hfBXNāBNUԂB
RS Remember11 Băo_CrWAB


////////////////////////////////////////////////////////////////////
/*                         A                             */
http://www.kab-studio.biz/Novel/Fuga/index.html

@\́@t@C_EgЁ@|PS|

@ɉāAϐX^Cώ@B̎ṕAOҎOlB
@͗Âɕ͂A̎q̐ԂɏȂ炸Ă
B
@rY͎AЂ狰|ƕsɑςA̐SzĂ
B
@q͗rUグA͂΂̊吺ŒグĂB
@qq͂ӂ̐킢̂̂ɂ͋ȂBނAeZT[
Ăϑf[^̕[Bj^[ɕ\閳̐܂
OtBƏÑf[^͎ӏΑSقȂӏB
@RƁANB`oƁA̔\͎҂͓̂ł́AƂC
[W`ĂB
@AqϓIȋL^͂̑ے肷B
@Ȋw҂ƂĂ̒qq́A`o̐퓬\͂₻̌ʂɂ͋ȂB`o
̑gAAߒɋB
@A͋[P̂̂ɂ͋ȂB
u悵IIv
@qKbc|[YBNɓA򖗂ԁBq
Ԃقǂ̃_[W͕ĂȂANl߂邱ƂɋJ
悤ɂ͌B
@܂uU[B
u͂APԋxeǍŏIEhłv
w͂x
@Cȕ̐ԂɔBǂ̒[܂ŗč낷ɑ΂
āAN͏ǊɈړł̂܂ܗĂB
uAĂ݂łˁv
u͑vƎvAOɂ͉񕜂Ăv
@ڂ𗣂ɔ炪B
u̓Iȃ_[W𕉂ĂȂƂ͂AȂقǂ̉񕜗͂
̂ł傤v
u炭򂻂̂̂̉eȂ񂾂Ǝvǁccv
@łA玩ǧƂ̂ȂƂ́AłȂB
@C悭オAN̕ւƕĂBɌł
āA
w[Ix
@ȂǂƂCȐオB
uccv
@̕ւƌ鏭N̎́AEӂĂB
                                                              ()


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
Machician SbccsӐ쒆BĊJ͗NPRI
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Machician{ݒ ŐVꗗ ]
http://d.hatena.ne.jp/kab_studio/searchdiary?word=*%5BMachician
_______________________________________________________________[KCM]

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

@Version 14.20
NeBJZNVƓIuWFNg

úAɃNeBJZNV̎gɂČĂ݂܂v
wց[A̓IuWFNgȂĂQ񂸂Ȃ̂Ɂx
uꂾNeBJZNV͎g₷Agʂ
ˁBɁAĝĂ̂邩ȁv
wHx
u܂AO̗voāBO g_iData ƂϐeXbh
ŋʂŎgpĂA̕ϐɃANZXӏr邽߂
NeBJZNVgp܂v
wǂݍŁAނƂ͂񂾂킯ˁx
uƂƂ́A g_iData ɃANZXӏꍇA
悤Ɉ͂܂ȂႢȂĂƂłv
wHx
uƂ΁v

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThreadOld( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        int i = g_iData;
        // 0.1 b҂܂B
        Sleep( 100 );
        g_iData = i + 1;
        TRACE( "%d\n", g_iData );
    }
    TRACE( "XbhIB\n" );
}

wANeBJZNVgĂȂAĂ[Ôˁx
u݂Hv

    HANDLE hThreadAry[3];
    hThreadAry[0]
        = (HANDLE)_beginthread( IncrementThread, 0, NULL );

    hThreadAry[1]
        = (HANDLE)_beginthread( IncrementThread, 0, NULL );

    hThreadAry[2]
        = (HANDLE)_beginthread( IncrementThreadOld, 0, NULL );

whAĈӖȂ񂶂ȂHx
uAӖȂłB g_iData ɃANZXӏׂ͂ē
ȂƈӖȂłBłccv
włHx
u g_iData ̓O[oϐȂ̂ŁAFXȊ֐ANZXł܂B
vO傫āAFXȊ֐ g_iData ɃANZXĂ
ccv
wccSNeBJZNVň͂܂ȂႢȂĂƁH@
߂ǂ[x
uƁBƂ΂ȊɁv

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThreadOld( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection );

        int i = g_iData;
        // 0.1 b҂܂B
        Sleep( 100 );
        g_iData = i + 1;
        TRACE( "%d\n", g_iData );

        // NeBJZNṼbN܂B
        LeaveCriticalSection( &g_stCriticalSection );
    }
    TRACE( "XbhIB\n" );
}

wȂقǁA悤Ɉ͂߂΂킯ˁx
uIuWFNgA܂蓯 g_stCriticalSection g΁A
Ă邩v
wHx
uƁAԂ񊴊oIɂ͂킩Ă񂾂낤ǁcc̗Ă
āv

// LϐB
int g_iData = 0;

// NeBJZNVpIuWFNgB
CRITICAL_SECTION g_stCriticalSection;

// NeBJZNVpIuWFNgiOldpjB
CRITICAL_SECTION g_stCriticalSectionOld;

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection );

        int i = g_iData;
        // 0.1 b҂܂B
        Sleep( 100 );
        g_iData = i + 1;
        TRACE( "%d\n", g_iData );

        // NeBJZNṼbN܂B
        LeaveCriticalSection( &g_stCriticalSection );
    }
    TRACE( "XbhIB\n" );
}

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThreadOld( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSectionOld );

        int i = g_iData;
        // 0.1 b҂܂B
        Sleep( 100 );
        g_iData = i + 1;
        TRACE( "%d\n", g_iData );

        // NeBJZNṼbN܂B
        LeaveCriticalSection( &g_stCriticalSectionOld );
    }
    TRACE( "XbhIB\n" );
}


// IncrementThread() ʃXbhƂČĂяo֐B
// ̊֐{^̃CxgnhƂŌĂłB
void CallThread()
{
    // NeBJZNV܂B
    InitializeCriticalSection( &g_stCriticalSection );
    InitializeCriticalSection( &g_stCriticalSectionOld );

    HANDLE hThreadAry[3];
    hThreadAry[0]
        = (HANDLE)_beginthread( IncrementThread, 0, NULL );

    hThreadAry[1]
        = (HANDLE)_beginthread( IncrementThread, 0, NULL );

    hThreadAry[2]
        = (HANDLE)_beginthread( IncrementThreadOld, 0, NULL );

    WaitForMultipleObjects( 3, hThreadAry, TRUE, 100 * 1000 );

    TRACE( "B\n" );
    TRACE( "%d\n", g_iData );

    // NeBJZNV폜܂B
    DeleteCriticalSection( &g_stCriticalSection );
    DeleteCriticalSection( &g_stCriticalSectionOld );
}

wNeBJZNV̓IuWFNgӂx
u IncrementThread()  IncrementThreadOld() pAʁXɗpӂ܂
BƁccv
wH@ʂ 20 ɂȂx
úA IncrementThread()  IncrementThreadOld() ʁXɓ
Ă邩BƂ΁v

void __cdecl IncrementThread( void *p_p )
{
...
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection );
// XbhPis
// g_stCriticalSection ɃbN܂B

u IncrementThread() bN|ĂԂ̎Av

void __cdecl IncrementThreadOld( void *p_p )
{
...
// XbhQis
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSectionOld );

ûƂA g_stCriticalSectionOld  g_stCriticalSection ƑS
WȂ̂ŁA g_stCriticalSection ɃZbgĂqbNr
񂪂܂v
wĂƂ́ccx
urꂸɁv

void __cdecl IncrementThreadOld( void *p_p )
{
...
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSectionOld );
// XbhQis
// g_stCriticalSectionOld ɃbN܂B

wAꂶӖȂx
u΂āAϐgĂꍇv

// XbhQis
// bNĂ̂őҋ@܂B
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection );

u g_stCriticalSection QƂ΁AXbhP|bN
XbhQƌĂ܂v
wȂ֐ĂȂĂ킯ˁx
u͂Ȃ񂾂ǁA g_iData ɃANZXӏǂǂ񑝂
Hv
whx
ûA g_iData 擾Ƃ g_iData ɏނƂ낪
ʁXɂȂ肵v
wcclȂAvOȂႢ
Hx
uꂪł˂ccv

/*
    Preview Next Story!
*/
wȂ񂩂Ɠ̂đςx
u}`XbhR̂ЂƂˁv
wGɂȂ΂Ȃقǁccx
uANeBJZNVłfbhbN܂v
wx
uƂ킯Ŏv
 Version 14.21 XbhŃfbhbN 
wɂÂIx
uNeBJZNVƂIuWFNgĂƂŁv
wfbhbNN邱ƂqƁrȂ́Hx


////////////////////////////////////////////////////////////////////
/*                QOOSNPQQVij̍XV              */
http://www.kab-studio.biz/index.html

EقƂ́[O`R̃y[W[\H
@܂vy[WԂ̂قƂ́[O`R̃y[W[\
B


////////////////////////////////////////////////////////////////////
/*                          ӁII                            */

Ẽ[ԐMȂłB
EӌE]Ez[`[ʂȓL]肨肭B
http://www.kab-studio.biz/nikki2/
EwǓo^Ƃɂ͂̃y[WōsȂĂB
http://www.mag2.com/m/0000012198.htm
E͎ōsȂĂB
EobNio[͂̃y[Wɂ܂B
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
*/
////////////////////////////////////////////////////////////////////

