環境 : 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 レコード以上) が含まれています。
マルチマップで最小限の時間スレッドロックを作成するにはどうすればよいですか?
EnterCriticalSection(&m_criticalsection);
///minimal lock time for Map ???
LeaveCriticalSection(&m_criticalsection);
アプリケーションのパフォーマンスを改善するために私を助けてください。