#thread #scoped #idiomatic #scope #join #ensure #dropped

已删除 scoped_threads

轻量级、安全且符合习惯的scoped线程

0.1.0 2020年3月29日

#29 in #dropped

MIT/Apache

16KB
148 代码行

Scoped Threads

Crates.io Docs.rs

轻量级、安全且符合习惯的scoped线程

此软件包提供了一种与 std::thread 相似的scoped替代品,即可以使用非静态数据(如父线程堆栈的引用)的线程。它模仿 std 的线程接口,因此使用此软件包无需学习新知识。尽管如此,仍有一个有意义的区别:删除的 JoinHandle 会连接而不是分离创建的线程,以确保借用数据仍然有效。此外,此软件包不会重新定义与scoped线程无关的类型和函数,例如 thread::park

它轻量级,因为它不使用昂贵的线程同步,如 Arc、互斥锁或通道。

此软件包的API不太可能更改,可以视为稳定,但只有在不稳定功能 thread_spawn_unchecked 稳定后,软件包才会达到1.0版本。

为什么是 scoped_threads 而不是 crossbeam_utils::scope

  • 您可能不想将scoped线程带来额外的ShardedLocks、CachePadded等。
  • scope 函数工作得很好,但感觉有点奇怪,并且不够灵活。
  • 同步原语(如 ArcMutex)被广泛使用,并带来了显著的开销。

许可证

根据您的选择,受以下任一许可证的许可:

贡献

除非您明确声明,否则任何有意提交给您的工作并包含在Apache-2.0许可证定义中的贡献,均应按上述方式双许可,不附加任何额外条款或条件。

无运行时依赖项

功能