3 个版本
使用旧的 Rust 2015
0.1.2 | 2017年4月27日 |
---|---|
0.1.1 | 2016年9月21日 |
0.1.0 | 2016年9月21日 |
在 并发 中排名 795
每月下载量 481
在 3 个 Crates 中使用(直接使用 2 个)
7KB
67 行(不包括注释)
线程控制库
缺少控制线程执行的 Rust 功能。
示例
use std::thread;
use thread_control::*;
fn main() {
let (flag, control) = make_pair();
let handle = thread::spawn(move || {
while flag.alive() {
}
});
assert_eq!(control.is_done(), false);
control.stop(); // Also you can `control.interrupt()` it
handle.join();
assert_eq!(control.is_interrupted(), false);
assert_eq!(control.is_done(), true);
}
许可证
许可协议为以下之一:
- Apache 许可协议 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交以包含在本作品中的贡献,根据 Apache-2.0 许可证的定义,将双重许可如上所述,没有任何附加条款或条件。
lib.rs
:
用于控制线程执行的库。
使用示例
use std::thread;
use thread_control::*;
fn main() {
let (flag, control) = make_pair();
let handle = thread::spawn(move || {
while flag.alive() {
}
});
assert_eq!(control.is_done(), false);
control.stop();
handle.join();
assert_eq!(control.is_interrupted(), false);
assert_eq!(control.is_done(), true);
}
中断示例
use std::thread;
use thread_control::*;
fn main() {
let (flag, control) = make_pair();
let handle = thread::spawn(move || {
while flag.alive() {
}
});
control.interrupt();
handle.join();
assert_eq!(control.is_interrupted(), true);
assert_eq!(control.is_done(), true);
}
恐慌示例
use std::thread;
use thread_control::*;
fn main() {
let (flag, control) = make_pair();
let handle = thread::spawn(move || {
while flag.alive() {
panic!("PANIC!");
}
});
handle.join();
assert_eq!(control.is_interrupted(), true);
assert_eq!(control.is_done(), true);
}