简单问题,CMap类,是否是线程安全的?

iq199 2006-01-08 10:44:59
如果2个线程同时SetAt,用不用自己加锁?
...全文
391 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangk 2006-01-09
  • 打赏
  • 举报
回复
std::map也不是线程安全的吧。
还是自己同步。
菲斯可儿 2006-01-09
  • 打赏
  • 举报
回复
用 std::map 吧。
handsomerun 2006-01-09
  • 打赏
  • 举报
回复
肯定要加的
蒋晟 2006-01-09
  • 打赏
  • 举报
回复
MFC不是线程安全的
eleek 2006-01-08
  • 打赏
  • 举报
回复
如果你两个线程同时调用同一个CMap对象的SetAt函数的话,应该是需要考虑加锁的。
资源下载链接为: https://pan.quark.cn/s/143986c6c9a4 GSTL 是一个支持泛型的数据结构库,提供了多种高效的数据结构和实用工具。下面为你介绍其中的核心组件和使用方法。 首先是双向链表容器,它支持泛型,并且提供了加锁和不加锁两种实现。不加锁的链表适用于单线程环境,具有更高的性能;加锁的链表则适用于多线程环境,能够保证线程安全。 有序哈希是 GSTL 与标准库不同的地方,它是一种高效的有序数据结构,支持快速的插入、删除和查找操作,同样也提供了基本使用和并发安全使用两种方式。 IFOP 是为了弥补 Golang 没有三目运算符而设计的,它通过函数模拟了三目运算符的功能,分为 if else 部分型相同和不同两种情况。 Mapex 是对标准库 map 的一层简单包装,增加了一些实用接口,如 Keys () 和 Values (),方便获取 map 的键和值。 RWMap 与 sync.Map 似,支持并发访问,但解决了 sync.Map 的两个问题:一是没有 Len 成员函数,二是没有使用泛型语法,避免了运行时才发现型使用错误的烦恼。 CMap 采用锁分区的方式实现并发安全,目前在几个指标上比 sync.Map 快。下面是 CMap 的基本使用示例: go var m cmap.CMap[string, string] // 声明一个string, string的map m.Store("hello", "1") // 保存 v1, ok1 := m.Load("hello") // 获取值 v1, ok1 = m.LoadAndDelete("hello") // 返回hello对应值,然后删除hello m.Delete("hello") // 删除 v1, ok1 = m.LoadOrStore("hello", "world") /

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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