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

    KAB-studio.h


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

    MF 2004/12/06(Mon) No.285
    zMF 2034
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

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

EPQ\ǎǉI
@PiHjAV\ǎłB
@̓nIVĨT^ccH
@_E[h CG Gallery ɂāB
[ CG Gallery ]
http://www.kab-studio.biz/CG/Gallery/index.html#KAB_studio_200412_1024


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

2004/11/28 (Sun)
@A}]͂XCRg[[󂯎āA[܂Ŏ펀
[ƌāA[ɉlɍsăR~bNXƂFXwBR~bNX
ǂݐ؂ȂccBAĂ_rOāÂƂقƂ́[B
ĂĎ˂Bđn슈B

2004/11/29 (Mon)
@AACAׂBƂ Excel  VBA ƁA
QCV̂׋BăK`K`̒gBċ@̈
B

2004/11/30 (Tue)
@Ƃx񂾁B̒ň[hB[Ƃă}Kǂ񂾂B
ƋsɍsB܂BzbgJ[ybgɐQ̂ǂȂ
H@Ƃ̎肷H@̂ĂccB
Lxɂ̑O؂BăxbhB

2004/12/01 (Wed)
@DWH 蒼BPP͌B̗͉͂񕜂܂BP
炢x݂ȂBăuK[B

2004/12/02 (Thu)
@Ȃ_Ei[BʂɉȂ񂾂ǁAAhoe[W𐶂Ȃ
āBSɕԂBPOKvWFNgւĂĂ₱ƂɁccB
ėLxUłȂȂccBĈȉB

2004/12/03 (Fri)
@SQL @ăeXgf[^oBȒPŁccBy͋x߂܂B
ĕςȃvWFNgBĂ܂ĂȂƁB

2004/12/04 (Sat)
@PQ\ǎ`BnIVĨT^ccH@S̓Iɂ͂
ǋl߂镔͌\ȂccBċƖBĖB


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

@\́@t@C_EgЁ@|PQ|

uA͂Ɓccv
@XߎBfނłłX[cBŜ悤ȎÂ悤
ȊoB
û̃CAoႢ܂ˁv
u͂Ƃˁv
@qqxƂA̎p͂ƂĂɂ͂łȂB
uVlB͋CɂȂǁv
uVĺ\\v
@tݍށB
uccVlƂȂ炢ǁA͖ؑNƂĂ邵cc͂
Ă܂v
uႠv
@qqg[jOEFAnB
uAȂ琅Ɋ|ĂȂAȁv
@؂tĕEBqq͕o悤ƂāA~߂B
ucc̏́Hv
@̑Ŝ𕢂̏B͔ĂƂ͂A͐q
ł͂ȂB
uAłH@KłႤłBƂ΁ccv
@V[ւƕAނɐJBォ琁o͂̐
`ĕ̑̂̂悤Ɏ芪ĂB
uɂ̔\́ccv
uāÂ̂΂ő点łv
@gB
@EBEBEBEBƂCk킷ƋɁAт畆ꂷ
B܂ŕL̕z݂̑̂悤ɁȂт삯߂
B
uĂv
@𓮂ƂɐǏ]B
uƂɍ킹ē悤ɁAĂKłǁv
@̉Er悯悤ɐBIɂȂErɂ́A̐Ԃ
AH錌B
uccv
ułAȒPɒłBזEɂĂȂ
ǁv
@̎wŏȂƁȀB
u\́ccv
uŜʓ|Aȏ؂AcƂƎvāv
@߂Ɛ̗͓r₦ȂтraւƑĂB
uꂪȀ̌Ƃ킯ˁccv
@qq́A̕Gȕ\ɁA̍Ԃ}ނƂŐt
B
                                                              ()


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
uccq́A߂̂ǂȂƂDȂ́Hv
uDƂBOȂƂBƂBꏏɂė܂v
uȂقǁÂǂĂƂ납ˁv
@ԂAႤǁB

Machician Rb DƃXL D]AڒI
[ 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.18
NeBJZNVgI

uÓAO[oϐɃCXbhƃTuXbhANZX
Ă݂܂v
w\ȒPɂłˁx
u댯v
whx
u Version 14.01 ( No.268 ) łłAȂႢȂ
Ăbv
w΁AȂƁccx

n`@
na@
˂
na@
n`@
˂
˂
n`@

wĂȂႤ񂾂ˁx
uƁBۂɂvOŌĂ݂܂v

// LϐB
int g_iData = 0;

// ʃXbhŌĂяoA g_iData 𑝂₵֐B
void __cdecl IncrementThread( 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" );
}


// IncrementThread() ʃXbhƂČĂяo֐B
// ̊֐{^̃CxgnhƂŌĂłB
void CallThread()
{
    HANDLE hThreadAry[3];
    hThreadAry[0]
        = (HANDLE)_beginthread( IncrementThread, 0, NULL );

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

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

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

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

úA g_iData 𑝂₵ IncrementThread() ֐ʃXbh
łRɎsv
w 10 񃋁[vĂ񂾂ˁB 1 ɂ 1 āA[v 10 A
Xbh͂RAĂƂ 30 ɂȂĂƂˁx
uƂ낪ȂȂłv

B
10

wH@ 10 āccAꂪ̓ĂȂĂ[̖̂
Hx
uƁB͂v

        int i = g_iData;
        // 0.1 b҂܂B
        Sleep( 100 );
        g_iData = i + 1;

u܂A g_iData  i ɒlRs[āA 0.1 b҂ĂA 1 
āA܂ g_iData ɓ܂v
wꂪ܂́Hx
uR̃XbhɃANZXႤˁBƂ΃XbhP 
g_iData  i ɃRs[ƂA i  1 Ƃ܂v
wx
uɁÃXbhP g_iData  i + 1 OɁAXbhQ 
g_iData  i ɃRs[Hv
w 1 ̂܂܁ccBXbhP g_iData  i + 1 āA g_iData 
 2 AǁAXbhQ邩ccx
u g_iData ͂܂ 2 ㏑ꂿႤłv
wx
u\ɂĂ݂Ɓccv

g_iData   XbhP        XbhQ        XbhR
1         i = g_iData                     
1         i : 1             i = g_iData       
1         i : 1             i : 1             i = g_iData
2 g_iData = i + 1   i : 1             i : 1
2 g_iData = i + 1   i : 1
2 g_iData = i + 1

uƂɂȂ܂v
wH@΂ĂǂŁccx
u Version 14.02 ( No.269 ) łv
wABÂƂ̓t@CǁA̓
̘bȂ񂾂ˁx
uƁBƂrƂAϓ_ł͓Bt@C
łϐłq擾EҏWE݁rĂꂪꍇɂ́A
ŜrKv킯łv
wȂƁAҏWĂԂɑ擾āAʂςႤ킯
ˁccx
uŁA͍Ō̓IuWFNgyNeBJZNVz
gĂ݂܂v

NeBJZNV i Critical Section j

wAƂˁx
uNeBJZNV͑̓IuWFNgƂȂ萫قȂ
v

EOȂ
EЂƂ̃vZX̒ŋ@\
EVOigȂ
EWaitForSingleObject() n֐gȂ

wȂ񂩑SRʕĊccx
uAԍŌɂĂ̂邩ȁBłAg₷
v
wg₷Hx
ul͈ႤǁAƎgĂ݂΂킩Ǝvv

// LϐB
int g_iData = 0;

// NeBJZNVpIuWFNgB
CRITICAL_SECTION g_stCriticalSection;

// ʃ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" );
}


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

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

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

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

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

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

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

wH@̓IuWFNg݂Ɋ֐ςȂ񂾁AĂ[
̃vOƎĂˁx
ũvỎPłˁBς̂́v

// NeBJZNVpIuWFNgB
CRITICAL_SECTION g_stCriticalSection;

uǉāÃNeBJZNVpIuWFNgg
S API Ăяo悤ɂAĂƂ납ȁBƂ肠
Ă݂āv
wقBA 30 ĂȂIIx
uƂ킯Ŏɑv

/*
    Preview Next Story!
*/
wł̓IuWFNgƂႤˁx
uIuWFNgčlȂv
wႠIuWFNgȂ񂶂Ȃx
ułIuWFNgȂłv
w킯킩Ȃx
uƂ킯Ŏv
 Version 14.19 NeBJZNVgĂ݂I 
wɂÂIx
uVCŁAł̓IuWFNĝƂ͓܂āv
w悯킩Ȃx


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


EقƂ́[ccH
@Ol̃zbgn[uǍvsccH


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

