#mutex #rwlock #同步原语 #线程

unlock

帮助您解锁性能问题的同步原语

13个版本

0.0.13 2024年2月12日
0.0.12 2024年2月3日

并发中排名413

Download history 41/week @ 2024-04-02 1/week @ 2024-04-09 238/week @ 2024-04-16

每月下载191

MIT/Apache

38KB
781

unlock

github crates.io docs.rs build status

多线程代码跟踪和故障排除的辅助工具。

Example Trace


用法

从该包导入RwLockMutex而不是直接导入parking_lot

之后,您可以像这样对代码段进行测量

let condition = true;

if condition {
    unlock::capture();
}

/* do some work */

if condition {
    let events = unlock::drain();
    unlock::html::write("trace.html", &events)?;
    println!("Wrote trace.html");
}

它是如何工作的

此库提供了两种外观类型

这些与高性能并发跟踪系统集成以捕获事件。虽然这会有一些开销,但我们的目标是使其尽可能小。

一旦工作负载已经被测量,就可以调用drain函数来收集这些事件,然后可以使用内置方法(如html::write)进行格式化,或者使用serde进行序列化以便稍后处理。


功能

  • trace - 启用真实跟踪支持。如果此功能被禁用,则此库将由一个可以轻松优化的占位符替换。
  • parking_lot(默认)- 启用对parking_lot类型的支持。如果此功能被启用且trace被禁用,则将重新导出parking_lot原语。
  • serde - 启用事件的序列化。

依赖项

~0.8–6.5MB
~34K SLoC