请教mfc中的多线程问题
1.全局map变量: map<string,vector<string>> f_map; “f1”与“aaa,bbb”对应就是map映射关系。
2.对话框中有2个列表框,list1里面内容“f1,f2”等,list2中显示与List1对应的内容,如点击list1中f1,list2显示“aaa,bbb”。
3.list1--list2中的对应依赖远端socket传过来的信息
void CTestDlg::OnStart()
{
//初始化socket
AfxBeginThread(&thread,0);
}
UINT thread(LPVOID p) //收消息,并且处理
{
CTestDlg*dlg=(CTestDlg*)AfxGetApp()->GetMainWnd();
bFlag = true;
while (bFlag)
{
dlg->m_acceptSocket = accept(dlg->m_socket, (SOCKADDR*)&(dlg->m_addr),&(dlg->addlen));
recv(dlg->m_acceptSocket,dlg->recvBuf,256,0)
dlg->HandleRecvMsg(dlg->recvBuf);
}
return 0;
}
void CTestDlg::HandleRecvMsg(char* msg)
{
//如果收到内容为“f1”消息
//将list2中f1对应的map刷为“ccc,ddd”
//同理如果收到内容为“f2”消息
//将list2中f2对应的map刷为其他相关数据
}
4.现在疑问是:当线程收到数据并处理f_map数据时候,这时我可能正在点击list1中的“f1”想看其在list2中的显示内容,如何做到同步且不冲突呢???即一边在读f_map,一边在写f_map。
如可能请给出详细的方法,先谢大家了!
[解决办法]
加锁~~~~~~