火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 367|回复: 5
打印 上一主题 下一主题

[视窗] 哈希表多线程下,是否加锁?

[复制链接]

55

主题

254

帖子

1503

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
1503
跳转到指定楼层
楼主
发表于 2024-5-11 16:59:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有多线程查找和增加哈希表,这要加锁吗?

屏幕截图 2024-05-11 164553.png (50.62 KB, 下载次数: 0)

屏幕截图 2024-05-11 164553.png
回复

使用道具 举报

22

主题

79

帖子

1331

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1331
沙发
发表于 2024-5-11 17:09:22 | 只看该作者
首先读写锁
回复

使用道具 举报

55

主题

254

帖子

1503

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
1503
板凳
 楼主| 发表于 2024-5-11 17:13:24 | 只看该作者

火山的哈希表好像没有只读,取值如果没有值,会自动插入空值。用不上读写锁吧?
回复

使用道具 举报

55

主题

254

帖子

1503

积分

金牌会员

嘿嘿哈哈

Rank: 6Rank: 6

积分
1503
地板
 楼主| 发表于 2024-5-11 17:30:25 | 只看该作者
<火山程序 类型 = "通常" 版本 = 1 />

方法 方法_插入POST数据 <公开 静态>
参数 参数_数据 <类型 = 字节集类>
参数 参数_连接ID <类型 = 变整数>
{
    成员_POST哈希表锁.加锁 ()
    变量 局部_临时数据 <类型 = 字节集类>
    局部_临时数据 = 成员_POST提交数据.取值 (参数_连接ID)
    局部_临时数据.添加字节集 (参数_数据)
    成员_POST提交数据.插入 (参数_连接ID, 局部_临时数据)
    成员_POST哈希表锁.解锁 ()

}

这个姿势正确吗?1万个线程也不会出错了吧?
回复

使用道具 举报

9

主题

265

帖子

2365

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2365
5#
发表于 2024-5-12 03:05:04 | 只看该作者
我写的后端有用到,读取没有加锁。跑很久了,没崩溃过。因为经常更新迭代版本,所以最长也只运行过10几天。
回复

使用道具 举报

5

主题

86

帖子

1046

积分

金牌会员

Rank: 6Rank: 6

积分
1046
6#
发表于 2024-5-12 10:37:26 | 只看该作者
读写都要加,另外字节集添加数据效率很低,不适合高并发,你用多线程测试模拟一下就懂了,我记得不到百兆就开始卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-6-2 02:39 , Processed in 0.090772 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表