Dobrý den,
mám problém s řešením p. KIIV pro CriticalSection jakozto objekt. Měl se zpustit jeho destruktor když funkce skončí, bohužel se tak neděje.
Takto jsem implementoval CritikalSection objekt:
class cCriticalSection{
protected:
CRITICAL_SECTION *mLock;
public:
cCriticalSection(CRITICAL_SECTION &lock){
mLock = &lock;
EnterCriticalSection(mLock);
}
~cCriticalSection(){
LeaveCriticalSection(mLock);
}
};
Zde je funkce, která se spouští v jednotlivých vláknech. Kritická sekce se ukonci jen pokud rucne vlozim destruktor, jinak je kriticka sekce aktivovana neustale :-/
int Testovaci(int i ,char* data)
{
cCriticalSection *c = new cCriticalSection(criticSection);
int insertFlag = Tree->Insert(dataCollection[i], data); /*Tree->Insert_MP(dataCollection[i], data);*/
c->~cCriticalSection(); //bohuzel nutne :-/
return insertFlag;
}
Mimochodem takto se to chová i v cyklu for, kde bych ocekaval ze se destruktor spusti pri kazdem novem cyklu. :-/
Nevíte pls jake je reseni tohoto problemu?