再见 Golang, 你好 Rust

28 天前
 proxyai

原因: 不想考虑数据竞争的问题了, 因为人永远考虑不周全, 所以让机器处理才是合理的

3986 次点击
所在节点    Rust
19 条回复
thinkm
28 天前
不用 Golang 的人,注定只能度过一个相对失败的人生
williamshan
27 天前
@thinkm 怎么讲
sherlockwhite
27 天前
有什么数据竞争的实例吗
sherlockwhite
27 天前
想不通从一个相对简单的语言转到一个复杂的语言就是因为数据竞争,不太懂是什么逻辑
march1993
27 天前
让机器处理太简单了,所有数据加个锁就完事儿了,但是这样做性能太差了。golang 的套路是让你通过 chan 去通信、同步,而不是靠 sync.*。并且 rust 也没有在语法层面提供同步的办法啊。
proxyai
27 天前
@march1993 加锁当然可以, 但是我觉得 golang 的处理方案很凑合, 而且你能保证你永远都会在有需要的时候把锁都加全吗? 是不是感觉非常别扭?
chaleaochexist
27 天前
这种帖子吧。。。 就是收币的, 得,5 铜币奉上, 不谢!
minami
27 天前
这么不喜欢锁怎么不去写单线程的 js ,是不喜欢吗
smallboy19991231
27 天前
@williamshan 有句原話是 不用 Mac 的人,注定只能度过一个相对失败的人生
march1993
27 天前
@proxyai 所以 golang 套路是让你用 chan 而不是让你加锁啊
standchan
27 天前
用 chan 去通信,而不是传统的锁。
xwhxbg
27 天前
冷知识,chan 内部自带一个锁
lsk569937453
27 天前
@proxyai
rust 不是银弹。
我在用 rust 实现 redis 的过程中对比了 mpsc::channel 和 Arc::Mutex 的性能。
单线程下,两者性能差不多的。
多线程下,全局 Arc::Mutex 对数据加锁的性能还比 mpsc::channel(多生产者单消费者)好一点

https://github.com/lsk569937453/rcache/tree/main:全局锁
https://github.com/lsk569937453/rcache/tree/0.0.1:mpsc::channel 实现的多生产者单消费者模型
ShuWei
27 天前
你确定自己能受得了 rust 的折磨?
fregie
27 天前
这有什么好选的,本身就是为了不同场景而设计的不同语言,在不同领域各有优势
nebkad
27 天前
欢迎新的 Rustacean~!

Rust 是否能够有效减少锁使用,对这个问题有怀疑的程序员朋友们,可以尝试挑战一下实现这个。
在假定使用者不能使用 unsafe 或者别的魔法的情况下,设计一个既可用于多线程,又可以用于单线程的支持异步操作的 ring buffer ,其隐含的约束或者需求是:只允许有一个写入端和一个读取端
我用 C# golang C++ Rust 都试过。
结论就是 Rust 确实不需要额外加锁,仅仅依靠类型系统在编译时就能保证使用者一定满足上述约束。
其他语言只能通过额外对 ring buffer 加锁保证,或者只能靠文档保证。
qianjian
27 天前
我纯纯什么都不懂,翻了挺多帖子和讨论,但还是不了解 rust 主攻的场景是什么,感觉什么都能写,但感觉没有哪一块领域属于提起它就想到 rust 。
nebkad
26 天前
@qianjian #17

如果不考虑开发成本、维护成本、沟通成本的话,确实是什么都能写啊。
哪个领域可以用 C++ 几乎都可以用 Rust ,没人提起,是因为 Rust (的名声)积累还不够深。
theshy2025
19 天前
rust is not that good but a lot more better than c++ thats for sure

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1037766

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX