V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lysS  ›  全部回复第 13 页 / 共 59 页
回复总数  1165
1 ... 9  10  11  12  13  14  15  16  17  18 ... 59  
2022-11-21 17:06:41 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
还有,我看你里面有自旋,这显然是不太好的
2022-11-21 16:49:03 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
话说你都加了互斥锁了,那个 slice 的 value 完全没必要用 atomic.Value 了
2022-11-21 16:48:53 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@wencan 数据竞争是有的,只不过不容易测出来吧。
比如函数 func (slice *Slice) Append(p interface{}) int 中,在互斥锁之前会读 limitSlicesNum ,互斥锁之后会写 limitSlicesNum 。而且这两个是可以同时发生的。
2022-11-18 17:27:05 +08:00
回复了 orenla 创建的主题 问与答 为什么有女孩喜欢烟味
还有喜欢檀香味的呢,说通俗就是尼姑味
2022-11-18 17:03:39 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@tsotsi 去掉也不行什么意思? 我那个是 ut 是证明 op 的那个库是并发不安全的
2022-11-18 12:54:45 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@tsotsi range 的时候读取是更新前的还是后的,这取决于设计(是整体的并发安全还是对元素的并发安全)。从这个角度来说我那个 ut 不太准确。

但还是那个结论。如果把竞争检测开启,我那个 ut 会有竞争、而你那个 sync.Map 不会有
2022-11-17 18:23:14 +08:00
回复了 woyao396 创建的主题 Go 编程语言 gin 返回 json time.Time 的问题
time.Time 就是 nano 时间戳加时区嘛。json 是要序列化成可读的啊。你不想要毫秒,就直接 parse 成字符串啊
2022-11-17 09:45:16 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@wencan 起码你不应该用 atomic.Value 存指针。对于 slice 的操作,你应该对其细化,比如 read1 的时候 updata2 这种就可以不用串行化。其实都类似于无锁队列一样,只是 slice 更复杂
2022-11-17 09:41:35 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@tsotsi 有啥问题,就是为了测并发操作啊
2022-11-16 17:01:59 +08:00
回复了 dafuyang 创建的主题 程序员 兄弟们, https 网站有办法访问 http 资源吗
会 block 吗?我记得只是浏览器的锁会警告
2022-11-16 16:59:20 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
@wencan 这和 range 无关,只是 range 更好测出来,atomic.Value 的使用是完全错误的。
2022-11-16 15:16:17 +08:00
回复了 wencan 创建的主题 Go 编程语言 实现了一套基于 lockfree 的并发安全的数据结构
你对 atomic.Value 的理解完全是错误的,应该从内存角度来看。像这个 ut 就过不了

```golang
func Test_Concurrent(t *testing.T) {
var slice Slice
slice.Append(0)
slice.Append(1)
slice.Append(2)
slice.Append(3)

go func() {
time.Sleep(time.Second * 2)
slice.UpdateAt(3, 0)
time.Sleep(time.Second * 5)
}()

slice.Range(func(index int, p interface{}) (stopIteration bool) {
time.Sleep(time.Second)
require.Equal(t, index, p)
return false
})
}
```

我们说原子变量比锁快,是因为原子变量相当于颗粒度更小的锁,如果锁和原子变量颗粒度相同,那么是没有性能差别的。
@keppelfei 东软是吧?
2022-11-13 11:10:20 +08:00
回复了 echooo0 创建的主题 Go 编程语言 golang 处理浮点数的疑问
就你列的那两个数,用基础类型是足以应付的
2022-11-13 11:07:33 +08:00
回复了 echooo0 创建的主题 Go 编程语言 golang 处理浮点数的疑问
官方库不是有 big 嘛? math/big/#Float.Mul 。float 数据库存字符串就行。基础类型的 float 只能表示 16 位精度
2022-11-10 10:25:22 +08:00
回复了 TOUJOURSER 创建的主题 Go 编程语言 Go 如何搭建私有的依赖仓库
就算你搭了个内网 git server ;还不是得手动把 GitHub 上的下载下来、再导入到你的 git 上。。这不一样嘛
下载加速是啥原理?我只知道 http 支持分片的可以并发下载一下
1 ... 9  10  11  12  13  14  15  16  17  18 ... 59  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2784 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 32ms · UTC 05:49 · PVG 13:49 · LAX 22:49 · JFK 01:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.