首页 文章

对Sync的性能影响感到困惑

提问于
浏览
3

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

Java的"synchronize"意味着 blocking ,所以我对如何实现具有 Sync 的Rust结构在多个线程上执行其方法的方式非常困惑 .

我搜索但没有找到有意义的答案 . 我这样思考:每个线程都会同步获取struct的引用(阻塞),但是并行调用该方法,是真的吗?

1 回答

  • 5

    Java:在通过此代码路径时,从多个线程访问此对象将成为同步的操作序列 .
    Rust:通过多个线程的引用同步访问此类型是安全的 .

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

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

    通常,您不应该依赖于在不同背景下具有完全相同含义的单词 . Java IO stream!= java collection stream!= RxJava reactive stream〜= tokio Stream . C volatile!= java volatile . 最终,散文比关键词更重要,而关键词只是短篇小说 .

相关问题