Jaký je vztah mezi lodí a CRITICAL_SECTION CCriticalSection

hlasů
0

Jaký je vztah mezi lodí a CRITICAL_SECTION CCriticalSection. Je CCriticalSection obal z CRITICAL_SECTION?

MIMOCHODEM:

Myslím, že následující kód je meanless protože cs není Global, že prvotním každých doby před zámkem (), takže nemůže zamknout XXX, je to?

int func
{
CCriticalSection cs;
cs.Lock();
XXX
cs.Unlock();
}

Mnohokrát děkuji!

Položena 27/08/2009 v 03:14
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Ano, MFC CCriticalSection sekce je jen obal kolem CRITICAL_SECTION Win32.

To platí pro skoro všechny MFC, jeho obrovský sadu tříd obálky kolem standardní funkce Win32.

Co se týče vašeho příkladu kódu ano použití kritická sekce v tomto kontextu je bezvýznamné. Co je to kritická sekce dělá, je podobný pojmenované mutex, je zajištěno, že zdroj je přístupný pouze prostřednictvím jednoho vlákna najednou. Správné použití kritická sekce bude jako objekt přístupný od více vláken, pak při použití zdroje, které nelze použít více než jedno vlákno v době:

MyGlobalCS.Lock();

// Do important work on resource

MyGlobalCS.Unlock();

Všimněte si také, že pokud jeho těžké se dostat do kritické sekce do sdíleného umístění, můžete použít pojmenovanou mutex místo.

Odpovězeno 27/08/2009 v 03:24
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more