如何制作同步对象字典?

Posted

技术标签:

【中文标题】如何制作同步对象字典?【英文标题】:How to make a dictionary of synchronization objects? 【发布时间】:2015-11-05 10:08:57 【问题描述】:

我需要的是 std::map<std::string, CCriticalSection> 之类的东西,但 CCriticalSection 是不可复制的。而不是CCriticalSection,我想我可以使用CRICITAL_SECTION,但它也是not possible to copy or move objects of this type。因为它是一个非常古老的项目,我被限制使用 MFC 和 VC6。我想以下列方式访问同步对象(以下代码不起作用,只是我想如何使用字典的一个想法):

// global variable
std::map<std::string, CCriticalSection> csec;

unsigned int somefunc(std::string ip)

    CSingleLock lock(&csec[ip], TRUE);
    // do something

所以我的问题是,如何使用 MFC 和 VC6 制作同步对象字典?

感谢您的回答!

【问题讨论】:

【参考方案1】:

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

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;

【讨论】:

以上是关于如何制作同步对象字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作包含特定值的 Swift 字典?

如何制作一个包含特定值的Swift词典?

Python Django:在视图中向对象添加属性还是制作数据字典更好?

如何制作一个以字典为输入并输出银行净额的程序?

如何使用 BeautifulSoup 从 JSON 数据制作 Python 字典

Python - 如何在文本文件中制作字典?