【问题标题】:Confused about performance implications of Sync对同步的性能影响感到困惑
【发布时间】:2018-03-03 21:54:52
【问题描述】:

在阅读Extensible Concurrency with the Sync and Send Traits 后,我对标记特征Sync 有疑问。

Java 的“同步”意味着阻塞,所以我很困惑如何实现一个带有Sync 的Rust 结构,其方法在多个线程上执行是有效的。

我搜索但没有找到有意义的答案。我是这么想的:每个线程都会同步(阻塞)获取结构体的引用,但是并行调用方法,是这样吗?

【问题讨论】:

    标签: performance rust synchronization


    【解决方案1】:

    Java:当通过此代码路径时,从多个线程访问此对象会变成一个同步动作序列。
    Rust:通过多个线程的引用同步访问这种类型是安全的。

    (以上两点并非规范定义,只是演示如何在句子中使用相似词来获得不同的含义)

    synchronized 在运行时被实现为互斥锁。 Sync 是关于特定类型的运行时属性的编译时承诺,它允许其他类型通过 trait bound 依赖这些属性。 Mutex 恰好是提供 Sync 行为的一种方式。不可变类型通常也提供这种行为而无需任何运行时成本。

    通常,您不应依赖在不同上下文中具有完全相同含义的单词。 Java IO 流!= java 集合流!= RxJava 反应流~= tokio 流。 C 易失性!= java 易失性。等等等等 最终,散文比只是简写的关键字更重要。

    【讨论】:

    • 谢谢。我正在学习 rust,所以对它知之甚少。从你的回答我不能说清楚。在可变结构引用上,Rust 将应用 Mutex 所以它阻塞了结构方法调用,这正是你的意思吗?但是在不可变结构方法调用上,我无法从你的句子中抓住灵魂。请详细说明,谢谢
    • 访问不可变数据通常是安全的,并且不会产生运行时成本,与互斥锁不同,您还需要了解什么?
    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    相关资源
    最近更新 更多