9 个版本
0.0.9 | 2024 年 5 月 18 日 |
---|---|
0.0.8 | 2024 年 5 月 18 日 |
0.0.5 | 2024 年 4 月 28 日 |
#209 在 并发
每月 87 次下载
80KB
2K SLoC
概述
rusturnate
引入了一种类似于单元格的对象 Rusturn
,它可以持有任意类型。它可以通过 Arc
或 static
在线程或未来边界之间共享。
编辑器(MutexGuard
)
类似于 std::sync::Mutex
,Rusturn
通过获取一个 Editor
(类似于 MutexGuard
)来允许一次只有一个线程或未来访问其内容。在任何给定时刻,只能有一个编辑器实例访问 Rusturn
对象。要完成编辑,必须丢弃编辑器或在其上调用 .done()
。之后,其他线程可以获取一个新实例的编辑器。如果在持有编辑器时发生 panic,它会被标记为 poisoned。尽管如此,访问仍然是可能的。但是,您需要处理由此产生的 PoisonError
并更新编辑器的值以清除其 poisoned 状态。仅当启用 std
功能时,auto-poisoning
才能工作。否则,您可以通过激活 manual_poisoning
或 anytime_poisoning
功能来进行手动 poisoning。
手动 poisoning
待办事项
访问对象 Access
待办事项
等待结果
待办事项
功能标志
待办事项
unsafe
的使用
待办事项
分配详情
该包本身不执行任何堆分配。但是,如果启用了 suspending_with_timeout
功能,它将使用 futures-timer 包,该包确实执行堆分配。仅当在 async
上下文中带有超时来暂停执行时,才会使用 futures-timer
。
路线图
-
Rusturn/
Editor
实现 -
sync/async
等待/排队 -
sync/async
超时 - 自动/手动 poisoning
- 完整的
README.md
说明 - 公开方法的清晰文档
- 内部方法的文档
- 显式边缘情况测试
- 更多的调试断言
许可协议
许可协议为Apache License, Version 2.0或MIT许可证之一。依赖项
约265-730KB
~17K SLoC