V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wencan  ›  全部回复第 3 页 / 共 16 页
回复总数  306
1  2  3  4  5  6  7  8  9  10 ... 16  
2022-11-16 15:28:15 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@lysS 没理解你的意思
你的意思是,Range 应该在调用时,给整个结构体的数据,取一次快照,然后 Range 遍历的是快照的内容??
目前 freesync.Slice 的 Range ,是每次调用 f 时,Load 值。
我试着把你那段代码里的 Slice ,换成 sync.Map ,两边输出结果是一样的。
2022-11-16 11:38:51 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@lesismal
纠正下错别字

如果是 bag 和 sync.Mutex+内置 map 的 benchmark 的比较,
根据我这边的的 benchmark 测试结构
只 add 的话,bag 会有几倍的优势
add+delete ,两者结果差不多
benchmark 代码见最新的提交
2022-11-16 11:35:19 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@lesismal
如果是 bag 和 sync.Mutex+内置 map 的 benchmark 的比较,
根据我这边的的 benchmark 测试结构
只 add 的话,bag 会有几倍的优势
add+delete ,两者结构差不多
benchmark 代码见最新的提交

freesync/lockfree 也实现了一个单链表,bag 也用到了这个单链表,但是还要继续优化。

你的 nbio ,我好好学习下,再请教。
额外问下,nbio 是不是牛逼 io 的意思?
2022-11-16 10:08:02 +08:00
回复了 wencan 创建的主题 Linux GParted 调整 Linux 挂载点磁盘空间大小会有什么问题吗?
@yulgang 谢谢。现在问题是一些程序,需要在 /系统目录下放一些大数据文件。
/挂载的分区是 30 多 GB 。
电脑挂载了两块硬盘。我也尝试用软目录的方式,来引导程序把一些数据文件放到另外一块硬盘上去,但失败了。
2022-11-16 08:40:51 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@lesismal
还有 freesync.Bag 和 sync.Map 比 Write 的问题,
开发 freesync.Bag 的出发点,就是 sync.Map 对读多友好,写多稍逊。Bag 为并发写多的场景设计。
2022-11-16 08:32:37 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@lesismal
多谢

我为 Bag 和 Slice 增加了新的 benchmark 测试用例:
bag 增加了和 sync.Map 、sync.Mutex+map 比纯 Add/Store ,和比 Add/Store + Delete 。
slice 增加了 LoadAndUpdate 。

下面这个,烦劳提供改动后的代码:
BenchmarkBagWrite-16 3418212 347.2 ns/op 87 B/op 3 allocs/op
BenchmarkSyncMapWrite-16 5754406 219.8 ns/op 0 B/op 0 allocs/op

slice 的 Load 问题,如果是纯 Load ,Load 时没有 Append 和 Update ,确实不需要加锁。
但如我上面所说:任何解决方案,都只可能适用于特定场景。freesync.Slice 考虑的是并发安全读写。原生 slice 不加锁进行纯 Load ,和 freesync.Slice 纯 Load ,两者没有可比性,如果真要比,我反倒觉得对 freesync.Slice 不公平。好比让飞机和汽车比在地上跑道比谁跑得快。

至于无锁数据结构,能发挥的场景较少。这个我承认。
写这些,主要原因是最近几个月没工作,家里闲着。
欢迎提供能发挥场景多的无锁数据结构需求。

最后,我这边 benchmark 测试的条件为:
goos: linux
goarch: amd64
cpu: AMD Ryzen 7 1800X Eight-Core Processor
2022-11-15 23:50:12 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@rekulas
1. freesync 为并发场景设计。
性能列描述的是本机 benchmark 测试的结果,benchmark 代码见 XXX_benchmark_test.go 文件。希望诸位朋友能够提供在各自的机器上执行的 benchmark 的输出。
2. 任何解决方案,都只可能适用于特定场景。
““决定”访问一个 freesync.slice 的时候”,这个需要在“决定”时对整个 slice 做一次快照,或者在“决定”时阻塞其它写操作;
“写一个 slice 的时候,可能也有其他协程在更新它,可能不是用户期望的”,如果是并发 Append ,互不影响;如果是 UpdateAt 不同的索引,互不影响;如果是 UpdateAt 同一索引,后面的更新会覆盖前面的更新——除非 CompareAndSwap 。但目前的实现不支持在指定位置 CompareAndSwap 。
3. 我喜欢“较新”的产品,不喜欢“太新”的产品。后面应该会支持泛型。
什么项目?
2022-11-09 19:19:32 +08:00
回复了 SWALLOWW 创建的主题 职场话题 这..刚要提离职,还没说呢领导给我加薪了
特殊时期,少换工作
@lysS
slice 只是个名字而已,没必要纠结“slice” delete 操作是否合理。
最终实现,应该不会叫 slice 。到时具体看底层数据结构,或者另外取个跟底层数据结构无关的名字。
根据基准测试结果,基于 mutex 和基于原子的 free-lock 操作,两者性能差距还是很明显。
2022-11-07 16:52:58 +08:00
回复了 realbender 创建的主题 酷工作 [内推]深圳垂直领域云服务商招聘高级 Golang 后台研发
电话或者视频面试可以吗?
@lysS 以朋友的想法,应该怎么实现一个并发安全的 slice ?最好还支持 delete
2022-11-07 09:56:56 +08:00
回复了 coderxy 创建的主题 Go 编程语言 proto-validator 使用介绍
@coderxy 我的意思是,校验这步,中间件就可以
@lysS 新增的空间
你再看 Grow 函数下面那段
2022-11-06 20:57:24 +08:00
回复了 coderxy 创建的主题 Go 编程语言 proto-validator 使用介绍
是不是有点麻烦?
proto 把 validator tag 加上
中间件再校验可好?
@fds
根据你的描述,我找到了 Slice 的 Append 方法 https://github.com/wencan/gox/blob/main/xsync/slice.go#L183
Append 下面的 Grow 段是加锁的
覆盖是通过 sync.Value 操作的
因此不存在你说的情况
不知道我有没有理解错你的意思
2022-11-06 17:58:30 +08:00
回复了 zhengchengdong 创建的主题 Go 编程语言 go 写业务,也可以很简单
怎么把复杂业务逻辑写好,似乎完全不被重视。还是第一次遇到同样在关注这个的朋友。
我设计和实现复杂的业务,
一部分是基于自己对 solid 的理解,具体还有待整理;
另一部分见: https://blog.wencan.org/2022/10/21/programming-thinking/
最近,我也在开发一套开源组件库。不过依据我的编程思想,它必须是组件库,没有重复的轮子,地址为: https://github.com/wencan/fastrest
如果有兴趣进一步沟通:ZW1haWw6IHdlbmNhbkBmb3htYWlsLmNvbQ==
@amiee0599 学历确实是一种能力,代表有一个良好的教育环境,代表学生时代努力。
但能力只看学历,就是问题了。特别是教育资源分配严重不均衡的当下。
2022-11-03 18:54:49 +08:00
回复了 maggiefor 创建的主题 酷工作 [上海]哔哩哔哩 B 端招聘资深服务端大佬(工作 5 年+)
很优秀的回答
据说那边不卷,学历年龄都不是问题,只看能力
真的假的?
1  2  3  4  5  6  7  8  9  10 ... 16  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3311 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 11:35 · PVG 19:35 · LAX 04:35 · JFK 07:35
Developed with CodeLauncher
♥ Do have faith in what you're doing.