多线程如何锁定内存变量

zhangjunfy 2010-11-12 05:02:44
类成员变量
map<cstring ,ctring> map_str;
在函数执行的时候,如何锁定 map_str,禁止其他函数同一时间访问???
...全文
206 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjunfy 2010-11-14
  • 打赏
  • 举报
回复
各位说的方法都可以,我全做过测试代码,结贴
周药师 2010-11-13
  • 打赏
  • 举报
回复
加锁 就行了
cwj2009 2010-11-13
  • 打赏
  • 举报
回复
信号量
临界区
互斥
事件

以上办法可以解决,相关上网搜索
calvin_guo 2010-11-13
  • 打赏
  • 举报
回复
同进程内用CriticalSection,跨进程用Mutex。
自己查查相关资料,不难的。
QQ282881515 2010-11-12
  • 打赏
  • 举报
回复
临界资源
zyyoung 2010-11-12
  • 打赏
  • 举报
回复
可以实现一个自动锁,使用起来方便
jhayumu 2010-11-12
  • 打赏
  • 举报
回复
1个临界区,1个关键段都可以实现同步
zhangjunfy 2010-11-12
  • 打赏
  • 举报
回复
5楼请明示代码,不熟悉啊
1楼的那个和CCriticalSection有什么区别?代码如下

m_Section.Lock();
//code
m_Section.Unlock();
teleinfor 2010-11-12
  • 打赏
  • 举报
回复
对,这种情形就是典型的互斥需求。使用CRITICAL_SECTION是个最佳的选择。
[Quote=引用楼主 zhangjunfy 的回复:]
类成员变量
map<cstring ,ctring> map_str;
在函数执行的时候,如何锁定 map_str,禁止其他函数同一时间访问???
[/Quote]
hfcarrey 2010-11-12
  • 打赏
  • 举报
回复
CCriticalSection m_CSectDB;
CSingleLock sl(&m_CSectDB);
sl.Lock();
///code
sl.Unlock();
ouyh12345 2010-11-12
  • 打赏
  • 举报
回复
一楼的就可以了

用临界区保护后,其它线程访问此变量时,将等待
zhangjunfy 2010-11-12
  • 打赏
  • 举报
回复
2楼的是锁定函数执行吧,
Eleven 2010-11-12
  • 打赏
  • 举报
回复
InitializeCriticalSection();
...
EnterCriticalSection();
// Your code
LeaveCriticalSection();

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧