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

    KAB-studio.h


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

    MF 2004/12/27(Mon) No.288
    zMF 2040
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

/*                         T͂x                           */

@TAPR̔zM͂x݂܂B
@NNnƂƂŁB

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

E߂񂨋x
@T̍XV͓ɂȂłB߂ȂccB


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

2004/12/19 (Sun)
@GƂقƂ́[O`RBBP\ǎǂ悤B
L[^[uŏIBNHKɌBNUԂATUBZ
A CLANNAD ƏCsBăpgQBēƓB
X[cB

2004/12/20 (Mon)
@POKƂPVKBd͊肾H@NUԂAVB5.1ch
ƂЂƂڂBăZVF[fBOB mixi B

2004/12/21 (Tue)
@dœOBPOKvWFNg Java [ƁB}篂PVKɖ߂
ĂƂԂɌߑOTBn{PŋAB

2004/12/22 (Wed)
@͓OB˔IȓO͏߂āBbL[B̃vWFNg
͖{ɑ傫炵B͋xoBNUԂAWBd̍Ԃ
ssƂBdĖYBĖYNUOlB

2004/12/23 (Thu)
@POxoBPOKƂPVKłOオB݂LLĂق
ǉHׂȂccBNUԂAXBVB
Ĕȟ_B1l200~B

2004/12/24 (Fri)
@[ŔɖZBT͐hccByƋx߂܂B
NUԂAPOBw߂ΖBăNX}XB

2004/12/25 (Sat)
@OQ[ɍsĂ܂BvleXƂACA[K[Ƃ͂ċN
Bߌ̓vleX茩ԃwb_[̏ƂB펀
rA[}[ccBNUԂAPPBRvWFNgB


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

@\́@t@C_EgЁ@|PT|

@uU[AŏIEhJnB
wM̐noc΂Ix
@ŇtƋɉE肩B
uIIv
@uɔEUグBl̊Ԃɂ鐅܂肩SC
oB
@BN̉EւƓ˂i݌ƏՓˁAƋɔUB
ʕւƋȂEďNB
uccIHv
@ȂB
@ȂB
@Օ̂ȂԂŎpȂƂƂ́Aڂ܂ɑȂ
BCgđ̂𕢂BĂ̂AƂ˗ςČ
Ă̂B
@CzȂȂBp҂ĂʂȋCzAA
𕢂ĈŒ݂͂Â炭ȂĂB
uccv
@ꏊ킩Ȃ̂ȂAUāAJE^[΂B
@A̍ÚAȂB
uccv
@lqĂĂA炿ȂB
@rāA
ww̕Ax
@тԈꔯ]B
@܂ɕꂽQڂɓB̒ɂ݂āB
wcc͂̑SĂガAx
@NRڂ̐΂Aɖ΂B
镑B
wƐĎâĂIx
uv
@ނɗ𒈂ɓÂ𗎂ƂBɓ₢̐n@]
Aő̂󂯎~߁Â܂ܑ̂PďuɋN苗B
uv
@uU[B
uIIv
uӂccv
@ΏƓIȗҁBNĒnʂ𓥂ݔB
uƁAĂ̂cc͂ꂩ疈Ă炢Ă
炨ƎvĂ񂾂AȎECXĂ̂͂߂ė~񂾂
ǁv
uHv
@ccH
uVlƂ͋[ĂĂłH@ɍ
炦΂Ȃ񂾂ǁv
uccv
@VlƖĺAΓB
@łAƂ͈ႤB
@́A̐lԂȂ̂ɁB
@N͂тԂďoւƌB
uAƁIv
                                                              ()


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[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.21
XbhŃfbhbN

úAȑOЉfbhbNɂāv
w Version 14.07 ( No.274 ) ̂ˁB̂ƂƉႤ́Hx
ȗO̓~[ebNXŎǁA̓NeBJZNV
fbhbNĂ݂܂v
w[AƂˁx

// LϐB
int g_iData = 0;

// NeBJZNVpIuWFNgB
CRITICAL_SECTION g_stCriticalSection1;
CRITICAL_SECTION g_stCriticalSection2;

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

        TRACE( "IncrementThread1() 1  2 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

        EnterCriticalSection( &g_stCriticalSection2 );

        TRACE( "IncrementThread1() 2 ̌B\n" );

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

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread2( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        EnterCriticalSection( &g_stCriticalSection2 );

        TRACE( "IncrementThread2() 2  1 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection1 );

        TRACE( "IncrementThread2() 1 ̌B\n" );
        
        // NeBJZNṼbN܂B
        LeaveCriticalSection( &g_stCriticalSection1 );
        LeaveCriticalSection( &g_stCriticalSection2 );
    }
    TRACE( "XbhIB\n" );
}


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

    HANDLE hThreadAry[2];
    hThreadAry[0]
        = (HANDLE)_beginthread( IncrementThread1, 0, NULL );
    hThreadAry[1]
        = (HANDLE)_beginthread( IncrementThread2, 0, NULL );

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

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

    // NeBJZNV폜܂B
    DeleteCriticalSection( &g_stCriticalSection1 );
    DeleteCriticalSection( &g_stCriticalSection2 );
}

wNeBJZNVӂcc΁A~[ebNX̎
ˁx
u{IɃfbhbNN͓̂IuWFNgꍇB
fbhbNdǵ݂ccv

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

        TRACE( "IncrementThread1() 1  2 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

        EnterCriticalSection( &g_stCriticalSection2 );

uƁv

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread2( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        EnterCriticalSection( &g_stCriticalSection2 );

        TRACE( "IncrementThread2() 2  1 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection1 );

uŁAgpĂNeBJZNVtɂȂĂłBꂪ
|Cgv
w IncrementThread1()  1  2 ̏A IncrementThread2()  2  1 
̏Ȃ񂾂ˁx
ȕŃbN|Ɓccv

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

        TRACE( "IncrementThread1() 1  2 ̊ԁB\n" );
        // 0.1 b҂܂B
// XbhP 0.1 b҂ĂԂɁcc
        Sleep( 100 );

        EnterCriticalSection( &g_stCriticalSection2 );

û悤ɁAXbhP Sleep()  1  2 ̊Ԃő҂ĂԂɁv

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread2( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        EnterCriticalSection( &g_stCriticalSection2 );

        TRACE( "IncrementThread2() 2  1 ̊ԁB\n" );
        // 0.1 b҂܂B
// XbhQő҂ĂƁcc
        Sleep( 100 );

        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection1 );

uXbhQĂႤƁAXbhPccv

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

        TRACE( "IncrementThread1() 1  2 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

// XbhPŃbN҂B
        EnterCriticalSection( &g_stCriticalSection2 );

uƁAXbhQ|bN̂҂ƂɂȂ܂v
wŁAXbhQccx

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread2( void *p_p )
{
    TRACE( "XbhJnB\n" );
    for( int iF1 = 0; iF1 < 10; ++iF1 )
    {
        EnterCriticalSection( &g_stCriticalSection2 );

        TRACE( "IncrementThread2() 2  1 ̊ԁB\n" );
        // 0.1 b҂܂B
        Sleep( 100 );

// XbhQŃbN҂B
        // NeBJZNVŃbN|܂B
        EnterCriticalSection( &g_stCriticalSection1 );

wXbhP|bN̂҂ႤAłXbhP
҂Ă킯x
uǂ悤ȂȂႢ܂v
wx
u WaitForSingleObject() ƈă^CAEgȂv
wccivHx
uƂ킯ŁÃvO͋IĂv

/*
    Preview Next Story!
*/
wzgɊȒPɃfbhbNႤˁx
uӂIuWFNgƊȒPɂȂႤv
wccIx
u͂Δv
wACfBAv񂾂ǁIx
uƂ킯Ŏv
 Version 14.22 ̓IuWFNg 
wɂÂIx
u͂̃ACfBA̖_ɂĂv
wĂ܂Ăˁ[IIx


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

EP\ǎI
@ς肨ł傤AƂƂŐV\ǎ̗\B
@āAقƂ́[ɂ邩AMachicianɂ邩ccB


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

EKAB-studio.h x
@NNnPƂƂ KAB-studio.h ̂̏T̍͂x݂ƂȂ
B䗹B
@̏T̑̍XVȂ\B\ȂłccB


////////////////////////////////////////////////////////////////////
/*                          Ӂ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
*/
////////////////////////////////////////////////////////////////////

