6个版本
0.1.5 | 2024年4月7日 |
---|---|
0.1.4 | 2024年4月7日 |
#98 在 无标准库
每月下载量197次
16KB
158 行
PidAllocator
概述
PidAllocator
crate提供了一种线程安全的、高效的PID(进程标识符)分配系统,适用于需要动态分配和回收PID的系统。此crate旨在在no_std
环境中工作,使其适用于嵌入式系统、操作系统和其他标准库设施不可用的情况。
特性
- 线程安全分配:使用
Arc
和SpinMutex
确保PID可以在多个线程中安全地分配和回收。 - 高效回收:实现了一种快速的分配策略,有效地回收PID,确保PID空间的最小浪费。
no_std
兼容性:设计用于在no_std
环境中工作,使其非常适合低级系统编程。
使用
将以下内容添加到您的Cargo.toml
文件中
[dependencies]
pid_allocator = "0.1.5"
然后在您的Rust代码中
#![no_std]
extern crate alloc;
use pid_allocator::{PidAllocator, Pid};
const ORDER: usize = 32; // Customize based on your requirements
fn main() {
let allocator = PidAllocator::<ORDER>::new();
// Attempt to allocate a PID
if let Some(pid) = allocator.allocate() {
// Use the PID for your purposes
println!("Allocated PID: {}", *pid);
// PID will be automatically recycled when `pid` goes out of scope
}
}
结构
PidAllocator
管理PID分配和回收的主要结构。
方法
new() -> Self
:创建PID分配器的新实例。allocate() -> Option<Pid>
:分配一个新的PID(如果可用),并将其包装在Pid
结构中。contains(usize) -> bool
:检查给定的PID是否当前已分配。
Pid
分配的PID的句柄。当释放时自动回收PID。
工作原理
PidAllocator
crate使用分层方法来管理PID的分配和回收。每一层代表一组PID,每个PID的状态(已分配或空闲)使用一个usize
值中的位来跟踪。分配器扫描这些层以快速找到空闲的PID并在不再使用时回收它们。
贡献
欢迎贡献!请随时提交拉取请求、报告错误和建议特性,通过问题跟踪器进行。
许可证
此包采用MIT许可证。
依赖项
~150KB