#stack #context #switch #switcher #light-weight #generator #userland

nightly switcher2

轻量级用户空间上下文切换

1 个不稳定版本

0.1.0 2022年8月30日

#3 in #userland

Apache-2.0/MIT

45KB
732 行代码(不含注释)

Switcher2

基于 Switcheroo 的轻量级上下文切换器。


lib.rs:

Switcher2 为 Rust 提供轻量级上下文切换。

它包含两部分

  1. 一个栈实现(目前仅提供一个 固定 8MB 栈)。
  2. 一个 生成器 实现。

示例

use switcher2::stack::*;
use switcher2::Generator;

fn  main() {
	let stack = EightMbStack::new().unwrap();
	let mut add_one = Generator::new(stack, |yielder, mut input| {
		loop {
			if input ==  0 {
				break;
			}
			input = yielder.suspend(input +  1);
		}
	});

	assert_eq!(add_one.resume(2), Some(3));
	assert_eq!(add_one.resume(127), Some(128));
	assert_eq!(add_one.resume(0), None);
	assert_eq!(add_one.resume(0), None);
}

依赖项

~215KB