C++ 如何制作同步对象的字典?

C++ 如何制作同步对象的字典?,c++,mfc,visual-c++-6,C++,Mfc,Visual C++ 6,我需要的是类似于std::map的东西,但CCriticalSection是不可复制的。我想我可以使用criticalsection而不是CCriticalSection,但它也是。因为这是一个非常古老的项目,我只能使用MFC和VC6。我希望以以下方式访问同步对象(以下代码不起作用,只是我希望如何使用Diciary的一个想法): //全局变量 标准::map csec; 无符号int-somefunc(标准::字符串ip) { csingelock锁(&csec[ip],TRUE); //做点什

我需要的是类似于
std::map
的东西,但CCriticalSection是不可复制的。我想我可以使用
criticalsection
而不是
CCriticalSection
,但它也是。因为这是一个非常古老的项目,我只能使用MFC和VC6。我希望以以下方式访问同步对象(以下代码不起作用,只是我希望如何使用Diciary的一个想法):

//全局变量
标准::map csec;
无符号int-somefunc(标准::字符串ip)
{
csingelock锁(&csec[ip],TRUE);
//做点什么
}
所以我的问题是,如何使用MFC和VC6制作同步对象的字典


谢谢你的回答

使用指向关键部分的指针映射:

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;
std::map csec;
//加
csec[“key1”]=新的CCriticalSection();
//通路
csingelock锁(csec[ip],TRUE);
//使用后不要忘记删除
for(std::map::iterator i=csec.begin();
i!=csec.end();++i)
删除i->second;
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;