c++ - visual - ¿Cómo hacer un diccionario de objetos de sincronización?
mfc windows (1)
Lo que necesito es algo como std::map<std::string, CCriticalSection>
pero CCriticalSection no se puede copiar. En lugar de CCriticalSection
, pensé que podría usar CRICITAL_SECTION
pero tampoco es posible copiar o mover objetos de este tipo . Debido a que es un proyecto muy antiguo, tengo restricciones para usar MFC y VC6. Me gustaría acceder a los objetos de sincronización de la siguiente manera (el siguiente código no funciona y es solo una idea de cómo me gustaría usar el dicionario):
// global variable
std::map<std::string, CCriticalSection> csec;
unsigned int somefunc(std::string ip)
{
CSingleLock lock(&csec[ip], TRUE);
// do something
}
Entonces mi pregunta es, ¿cómo hacer un diccionario de objetos de sincronización usando MFC y VC6?
¡Gracias por sus respuestas!
Use un mapa de punteros a secciones críticas:
std::map<std::string, CCriticalSection *> csec;
// add
csec["key1"] = new CCriticalSection();
// access
CSingleLock lock(csec[ip], TRUE);
// don''t forget to delete after use
for (std::map<std::string, CCriticalSection *>::iterator i = csec.begin();
i != csec.end(); ++i)
delete i->second;