环境:WINDOWS 7.0,C++,多线程多线程与多重映射
我创建了一个新的工作线程接收插座上的数据,并将其添加到一个静态multimap
实例。
代码片段:
//remember mymultimap is static data type
static std::multimap<string,string> mymultimap;
EnterCriticalSection(&m_criticalsection);
mymultimap.insert ("aaa", "bbb"));
LeaveCriticalSection(&m_criticalsection);
在同一时间我的主线程读取相同的静态多重映射: 代码卡:
EnterCriticalSection(&m_criticalsection);
std::multimap<string,string>::iterator it = mymultimap.begin();
for(; it != mymultimap.end(); it++)
{
std::string firstName = (*it).first;
std::string secondName = (*it).second;
}
LeaveCriticalSection(&m_criticalsection);
作为主要工作线程汽车无做读写,它妨碍了我的应用程序性能。 multimap
的实例还包含大量数据(超过10,000条记录)。
如何在multimap中使线程锁定时间最短?
EnterCriticalSection(&m_criticalsection);
///minimal lock time for Map ???
LeaveCriticalSection(&m_criticalsection);
请帮我提高我的应用程序性能。
根据您在循环中执行的操作,您可以将数据复制到第二个集合,然后在离开临界区之后对副本执行(可能)冗长的操作。 – 2013-02-27 13:10:35