环境: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);
请帮助我提高我的应用程序性能。