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

    KAB-studio.h


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

    MF 2004/09/13(Mon) No.274
    zMF 2063
    sF ܂܂ ( URL: http://www.mag2.com/  ID: 0000012198 )
*/
////////////////////////////////////////////////////////////////////

/*                         T͂x                           */

@TAXQO̔zM͂x݂܂BNP̉ċx݂łB
@~ƐɋxނƂ傤ǔNTOɂȂ̂ŁijB
@Az[y[W͒̕ʏcƂȂ̂łSB


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

EقƂ́[X̂TǉI
@Ol̃zbgn[uɁuX̂T fViIvǉI
[ Ol̃zbgn[u ]
http://www.kab-studio.biz/Comic/HotHerb/index.html

EMachicianX^[g
@MachicianƂԂ낮ŘAڊJnI
@cc͂QOQQNA@̍ĂqƁAȒɏZޏ
qƂ̗̕ccƂAcbR~̌ޏƊ|˂
ccƂAW[Wɐዾ|̎qƖ@킵肷
ccƂȂ񂩓ȕB
@ݒ͕AقƂ́[ƃNĂ̂ł̓ǎ҂̕B
[ Machician ]
http://d.hatena.ne.jp/kab_studio/20040823#1093276416
[ Ԃ낮B ]
http://d.hatena.ne.jp/kab_studio/


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

2004/09/05 (Sun)
@ߑO͂̂тBߌ͕\ǎ`BMachiciańBȂccB
MachicianSBtHgV̊{BƋl܂ԂȂ̂B
}݂Ă͉oGB

2004/09/06 (Mon)
@ʂɂƁBCƂbBV@\ǉccBnolĂ΁B
ԂƂԂɉ߂BȂccB

2004/09/07 (Tue)
@ȂdNNBƂ̒gIɂ͂P@\̂Pʕ쐬B
ł_CGbgBłccBX̂ɂǃrbO^I
Ɨ~ȂBėvdl^B

2004/09/08 (Wed)
@Ƃ͍̑I点āBċx݃[hH@ł_CGbg
JnBԂ낮Ƃ̊֌WBėvdȂBĂQOTCgB

2004/09/09 (Thu)
@ߑO̓~[eBOBv̘bƂBV@\ŉEB
Ă[B܂͎߂ĂccBubNXŃR~bNXw
Bׂ͂Ăȃ_CA[BࣕՂ̓GXeȂB
Ăł_CGbgB

2004/09/10 (Fri)
@vZn̂ƊBPOAx邩H@̊Ԃ
]ꂽH@AɂԂԐHוBŏȂB 
KURAU ͍ĉV[ǂǁccBĂ̗\B

2004/09/11 (Sat)
@[ƁBKXDVDAȂƂ͂邯ǑS̓Iɂ͂悵B
yꂾŎԂ߂B`uʂł͂Ȃ[B΂
قƂ́[ĖMachicianB


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

@\́@t@C_EgЁ@|P|

@ɂނ悤ɐ΂X̒B
@rYƋq͕҂񂾓؂ɂAǂނƂ͂łȂӖ͂
아тB
uIHv
uAsv
@ӂׂ̖͗؂ւƈڂAӂ肪؂֕̕A炪B아
ƒĂ邩mFĂAGAOBڂɂ͕ς
ȂA͂̌ʂĂA̖؂ւƈڂB
uI܂[Iv
@ȂɂȂΖʂ狱qUB͂ނ悤ɏ炳ꂽE
́AЂƂ̓łЂƂɒԂ悤ƂĂB
uӂƂJlv
uA󂳂ĂĂłv
@ӂ͓RƂB
ułǍ아Ă̑ÔƈႢ܂ˁv
@q͌아ɎBȑÔ̂苭͂ȂƂȂƂȂ킩B
uႤ̂AÔ؂ꂿv
uhv
@ł͓荢Ȍ아͖ʌłȂAނ悤ɒ菄
ÂJŒԂȂƂāAʂ͌B
ubጋ\łĂÂĂ킯ɂȂA
čU߂ĂCzȂAUߓ邾̏Ȃv
uȂƌ܂ˁccv
ǔ아͋͂Εǂ邩甍ɂ͂B̂Ԃ
cc܂߂Ăނ݂ɏo͂łȂȂ邯ǁv
uO݂ɎBo莩RAĂ킯ȂłHv
uB͖ʂBΕAĂ̂ˁA
ĂȂƁv
u[v
@X̒AЂЂ肵UĕoĂB
                                                              ()

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

@Version 14.07
fbhbNI

úAɂčłӂȂ΂ȂȂyfbhbNz
ɂĐ܂v
włǂHx
up deadlock Aǂ悤ȂSɌł܂Ԃ̂Ƃ\
v
wȂ񂩓x
uASRȂBƂ΁ccv

EX`
EXa

uƂ܂v
wȂ肨XHx
uႾcĉXɂ́Aꂼꎟ̂悤ȃ[܂v

EX`FXa炤B
EXaFX`炤B

wȂɂA܂łĂȂȂx
uꂪfbhbNv
wHHHx
u~[ebNXɒuĂ݂܂v

EvZX`
EvZXa

uꍇɁÂ悤ȃvOĂƂ܂v

EvZX`FvZXã~[ebNXaꂽ
@@@@@@@~[ebNX`B
EvZXaFvZX`̃~[ebNX`ꂽ
@@@@@@@~[ebNXaB

wHHHx
u}ɂƂv

vZX`                            vZXa
~[ebNX`̍쐬yяLB
                                      ~[ebNX`擾B
                                      ~[ebNXa̍쐬yяLB
~[ebNXa擾B
~[ebNX`L~[ebNX`ĎJnB
~[ebNX`L              iĎj
~[ebNXaĎJn~[ebNXaL
iĎj                            iĎj
iĎj                            iĎj
...

wAƂĎɂȂIx
u܂A`Ƃa~[ebNXĂāAƂVOiI
t̎ɂ݂ɊĎn߂ႤƁA[ƌɂȂႤ
łv
w܂Ix
u܂񂾂āBԂyfbhbNzx
w܂ɂǂ悤Ȃˁccx
uۂɃvOŎĂ݂܂B܂AO ProcessA 
ProcessB ̃TvpӂĂv
w͂x
uACĂv

yProcessAz
namespace B1
{

HANDLE g_hMutexA = NULL;
HANDLE g_hMutexB = NULL;
const char *const MUTEX_NAME_A = "ProcessesMutexA";
const char *const MUTEX_NAME_B = "ProcessesMutexB";

void CreateA()
{
    g_hMutexA = CreateMutex( NULL, TRUE, MUTEX_NAME_A );
    TRACE( "%x\n", g_hMutexA );
}

void OpenB()
{
    g_hMutexB = OpenMutex( MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME_B );
    TRACE( "%x\n", g_hMutexB );
}

void WaitB()
{
    TRACE( "ҋ@JnB\n" );
    DWORD dwResult = WaitForSingleObject( g_hMutexB, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "^CAEgB\n" );
    }
    else
    {
        TRACE( "ҋ@IB\n" );
    }
}

void ReleaseB()
{
    ReleaseMutex( g_hMutexB );
}

void CloseA()
{
    CloseHandle( g_hMutexA );
}

}


yProcessBz
namespace B1
{

HANDLE g_hMutexA = NULL;
HANDLE g_hMutexB = NULL;
const char *const MUTEX_NAME_A = "ProcessesMutexA";
const char *const MUTEX_NAME_B = "ProcessesMutexB";

void CreateB()
{
    g_hMutexB = CreateMutex( NULL, TRUE, MUTEX_NAME_B );
    TRACE( "%x\n", g_hMutexB );
}

void OpenA()
{
    g_hMutexA = OpenMutex( MUTEX_ALL_ACCESS, FALSE, MUTEX_NAME_A );
    TRACE( "%x\n", g_hMutexA );
}

void WaitA()
{
    TRACE( "ҋ@JnB\n" );
    DWORD dwResult = WaitForSingleObject( g_hMutexA, 120000 );

    if( dwResult == WAIT_TIMEOUT )
    {
        TRACE( "^CAEgB\n" );
    }
    else
    {
        TRACE( "ҋ@IB\n" );
    }
}

void ReleaseA()
{
    ReleaseMutex( g_hMutexA );
}

void CloseB()
{
    CloseHandle( g_hMutexB );
}

}

wIx
uOƓ悤ɁAe֐{^̃nhĂԂ悤ɂĂ
v
wȂ񂩈ႢĂ܂킩Ȃ񂾂ǁx
uȒPɌ

@@@@ | 쐬            | ҋ@
ProcessA | ProcessesMutexA | ProcessesMutexB
ProcessB | ProcessesMutexB | ProcessesMutexA

uƂɁA肪~[ebNXҋ@̑ɂAĂ
`ɂȂ܂v
wA΂̃fbhbNɂȂIx
uƂ킯ŎĂ݂܂傤B܂ ProcessA::CreateA() Ă 
ProcessesMutexA 쐬v
wقx
u ProcessB::CreateB() Ă ProcessesMutexB 쐬v
wقx
u ProcessB::OpenA() Ă ProcessesMutexA ̃nh擾A
 ProcessB::WaitA() Ăőҋ@Jnv
wł ProcessA ɏL邩҂ςȂAˁx
uŁȀԂ̎ ProcessA::OpenB() Ă ProcessesMutexB 
nh擾A ProcessA::WaitB() ĂԂƁv
w ProcessB ɏL܂܂ccAł܂x
uƂ킯ŃfbhbN̊B ProcessA ProcessB Ƃł܂
܂܂ɂȂ܂v
w[ccx
uȂ݂ɂ̃vO̓^CAEgԂQɐݒ肵Ă邩v
w WaitForSingleObject() ̑QˁBAQ҂畜x
uƂ킯ŁAfbhbN͋CtȂƊȒPɔ܂v
w@Ăǂ΂́Hx
uɂĂ͂ƂłƐ邯ǁAƂ肠ԊȒPȕ@
́qIuWFNg͂ЂƂȂrƂȁv
wA΂݂ɂ邱ƂȂˁx
uقƂǂ̏ꍇЂƂŏ\AKvłZ}tHg΂Ȃ
Ȃ邱Ƃv
wZ}tHHx
uƂ킯ŎɑIv

/*
    Preview Next Story!
*/
w܂ӂAĂȂ񂩌ɂx
uꂪKvȒP̂ЂƂv
w݂[Ăx
ułg悤ɂȂƂƂɋCɓ邩v
wmɁccZ}tHAZ}tHAZ}tHAHx
uƂ킯Ŏv
 Version 14.08 Z}tHgĂ݂I 
wɂÂIx
uȂ݂ɃZ}tH́yM@zĈӖv
w킩Ix


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

EX\ǎ
@PAV\łB
@ccPTxꂿႢ܂ijB߂ȂB
@PĊȂȂꂶccB

EقƂ́[ɂPbǉ
@Ol̃zbgn[uɈbǉ܂B
@ccʂɂقƂ́[`\ǎxꂽ킯ł͂ȂłijB


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

