環境: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