Sync并从标准库中Send发挥threadAPI 的重要作用.但是,它们也包括在内libcore.在后者中,有一些类型可以实现它们,但我找不到任何"消费者",也就是说,某些API会将这些特征用作边界.
它们是否具有编译器所知道的特殊行为/含义?请注意,它们是lang项目,所以它们在某种程度上是特殊的.Sync似乎与静力学有关,但这个链接并没有详细说明.
TL; DR:如果Send并且Sync是关于线程安全的话,它们在libcore没有多线程概念的地方会发挥什么作用?编译器将它们作为lang项分配给什么语义?
如果
Send并且Sync是关于线程安全的话,它们在libcore没有多线程概念的地方会发挥什么作用?
libcore是关于设定语言的核心概念; Send并且Sync是语言的核心:编译器知道它们的原因1.
libcore不使用多线程本身的事实是正交的,并且没有这种选择的发生率.
顺便说一句,请考虑一下,仅仅因为libcore没有多线程并不意味着一个人无法建立一个替代的标准库,libcore那就是多线程.也就是说,毕竟,分离为目的core的std.
1 正如@kennytm在评论中所提到的,Rust有一个用户可访问的机制,允许根据所有特征是否由所有结构字段实现来自动传播标记特征.这是稍显不足Send和Sync,不过,因为它不支持&(Trait + Send),因此编译器需要大约这两个特殊的知识,这就是为什么他们是郎物品.
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |