#coroutine

sys context

使用 Boost.Context 的 Rust 协作多任务

12 个版本 (6 个稳定版)

使用旧的 Rust 2015

3.0.0 2023 年 1 月 25 日
2.1.0 2018 年 2 月 2 日
2.0.1 2018 年 1 月 7 日
2.0.0 2017 年 6 月 6 日
0.1.3 2015 年 10 月 11 日

#473 in 并发

Download history 149/week @ 2024-04-22 193/week @ 2024-04-29 125/week @ 2024-05-06 210/week @ 2024-05-13 164/week @ 2024-05-20 145/week @ 2024-05-27 192/week @ 2024-06-03 116/week @ 2024-06-10 129/week @ 2024-06-17 211/week @ 2024-06-24 40/week @ 2024-07-01 43/week @ 2024-07-08 184/week @ 2024-07-15 195/week @ 2024-07-22 275/week @ 2024-07-29 196/week @ 2024-08-05

每月 855 次下载
用于 14 个 Crates(10 个直接使用)

MIT/Apache

335KB
4.5K SLoC

GNU Style Assembly 2.5K SLoC // 0.5% comments Assembly 1.5K SLoC // 0.3% comments Rust 581 SLoC // 0.1% comments

context-rs

Build Status Build status License

本项目提供了一个简单的接口来访问著名的 Boost.Context 库,因此提供了构建更高层次抽象的构建块,如协程、协作线程(用户空间线程)或 C++ 中 C# 关键字 yield 的等价物。

API 文档

用法

要使用 context,首先将以下内容添加到您的 Cargo.toml

[dependencies]
context = "3.0"

然后将其添加到您的源文件中

extern crate context;

性能

性能严重依赖于架构甚至操作系统。上下文切换本身通常与常规函数调用一样快,因此可以将其视为一种。

要亲自查看,请运行 cargo bench resume。然后,您可以比较 resume 基准测试(使用 Context::resume())的结果与 resume_reference_perf(使用常规函数调用)的结果。

平台

架构 Linux (UNIX) Windows MacOS X iOS
i386 SYSV (ELF) MS (PE) SYSV (MACH-O) -
x86_64 SYSV, X32 (ELF) MS (PE) SYSV (MACH-O) -
arm (aarch32) AAPCS (ELF) AAPCS (PE) - AAPCS (MACH-O)
arm (aarch64) AAPCS (ELF) - - AAPCS (MACH-O)
mips1 O32 (ELF) - - -
ppc32 SYSV (ELF), XCOFF - SYSV (MACH-O) -
ppc64 SYSV (ELF), XCOFF - SYSV (MACH-O) -

格式:ABI (二进制格式)。来源: Boost.Context

依赖项

~0.4–395KB