Golang 中国

请问: int, float,struct, 存储的指针,数组是不是多线程安全的? 这些东西都要加锁吗?


newgolanger 于 2017-09-13 21:09 修改
6 回复
heimeil
#1 heimeil • 2017-09-13 23:28

线程安全会特别指明的,没指明就都是非线程安全的。

sevenhe
#2 sevenhe • 2017-09-14 01:02

任何写变量操作,语言都不会直接变成线程安全的,因为涉及到各平台的实现方式不同,效率也可能受到一定的影响。

jthmath
#3 jthmath • 2017-09-14 09:40

@sevenhe rust倒是直接搞成了线程安全的

snake117
#4 snake117 • 2017-09-14 20:59

@jthmath rust是搞成和python一样,将数值设成不可变类型了,不可变了都,当然线程安全了。

sevenhe
#5 sevenhe • 2017-09-15 22:17

嗯,那的确是我的问题,rust不太了解

newgolanger
#6 newgolanger • 2017-09-16 22:05

不断加锁,,,,, 只能这样, 还是rust先进.
一直以为 var a int = 1 这样的不用加锁, int不是复杂类型,硬挨不会出现竞争, 直到并发时突然发现a莫名其妙的=0了…..

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。