30 个版本 (2 个稳定版)
1.1.0 | 2024年4月29日 |
---|---|
0.16.0 | 2024年2月28日 |
0.15.1 | 2023年12月5日 |
0.15.0 | 2023年11月13日 |
0.1.0 | 2017年6月22日 |
在 并发 中排名第 21
每月下载量 61,613
在 32 个 Crates 中使用(直接使用 20 个)
89KB
1K SLoC
thread-priority
一个简单的库,用于控制线程调度策略和线程优先级。
如果你的操作系统尚未支持,请创建一个问题。
最小 Rust 编译器版本
是 1.67
。如果您需要任何帮助使其能够使用 1.56
编译,请联系我,只需将 rstest
版本降级到 0.17
或更低(代码是兼容的)即可。
支持的平台
- Linux
- Android
- DragonFly
- FreeBSD
- OpenBSD
- NetBSD
- macOS
- iOS
- Windows
示例
最小跨平台示例
将当前线程的优先级设置为最低
use thread_priority::*;
fn main() {
assert!(set_current_thread_priority(ThreadPriority::Min).is_ok());
}
与上面相同,但使用特定的值
use thread_priority::*;
use std::convert::TryInto;
fn main() {
// The lower the number the lower the priority.
assert!(set_current_thread_priority(ThreadPriority::Crossplatform(0.try_into().unwrap())).is_ok());
}
Windows 特定示例
将线程优先级设置为可能的最小值
use thread_priority::*;
fn main() {
// The lower the number the lower the priority.
assert!(set_current_thread_priority(ThreadPriority::Os(WinAPIThreadPriority::Lowest.into())).is_ok());
}
设置新线程的理想处理器
use thread_priority::*;
fn main() {
std::thread::spawn(|| {
set_thread_ideal_processor(thread_native_id(), 0);
println!("Hello world!");
});
}
使用 ThreadBuilderExt 特性构建线程
use thread_priority::*;
use thread_priority::ThreadBuilderExt;
let thread = std::thread::Builder::new()
.name("MyNewThread".to_owned())
.spawn_with_priority(ThreadPriority::Max, |result| {
// This is printed out from within the spawned thread.
println!("Set priority result: {:?}", result);
assert!(result.is_ok());
}).unwrap();
thread.join();
使用 ThreadBuilder 构建线程
use thread_priority::*;
let thread = ThreadBuilder::default()
.name("MyThread")
.priority(ThreadPriority::Max)
.spawn(|result| {
// This is printed out from within the spawned thread.
println!("Set priority result: {:?}", result);
assert!(result.is_ok());
}).unwrap();
thread.join();
// Another example where we don't care about the priority having been set.
let thread = ThreadBuilder::default()
.name("MyThread")
.priority(ThreadPriority::Max)
.spawn_careless(|| {
// This is printed out from within the spawned thread.
println!("We don't care about the priority result.");
}).unwrap();
thread.join();
在当前线程上使用 ThreadExt 特性
use thread_priority::*;
assert!(std::thread::current().get_priority().is_ok());
println!("This thread's native id is: {:?}", std::thread::current().get_native_id());
许可证
此项目遵循 MIT 许可证。
依赖关系
~130–385KB