#监控 #恐慌 #监控器 #看门狗

panic_monitor

帮助您监控线程并处理恐慌

1 个不稳定版本

使用旧的 Rust 2015

0.2.1 2018年5月2日

#10#看门狗

MIT/Apache

11KB
68

                             =============
                             panic_monitor
                             =============

panic_monitor 帮助您监控线程并处理恐慌。您可能会想使用 libstd 的 JoinHandles 来实现此功能;然而,它们有两个主要限制

  • JoinHandle::join() 会阻塞当前线程。如果您想从单个 "看门狗" 线程监控多个线程,则需要类似 try_join() 的功能,并且最好有一个 "epoll for JoinHandles" 来避免忙等待。但是,JoinHandle 并没有实现这些功能。
  • 您不能克隆一个 JoinHandle。如果您想当特定线程恐慌时通知多个线程,您不能使用它的 JoinHandle 来实现。

panic_monitor 解决了这两个问题。PanicMonitor::wait() 允许您指定多个线程,并且一旦其中一个线程恐慌,它就会返回。线程通过它们的 ThreadId(可克隆)指定,这意味着多个线程可以监控同一个线程。每次对 PanicMonitor::wait() 的调用都可以指定不同的监控线程集。

当被监控的线程恐慌时,您会得到一个包含线程名称和 ID 的 Thread 结构体。与 JoinHandle::join() 不同,您 不会 得到传递给 panic!() 的值——这是不可能的,因为此值不需要实现 Clone。

许可协议

以下任一协议下许可,由您选择

除非您明确声明,否则您提交的任何旨在包含在作品中的贡献,根据 Apache-2.0 许可协议定义,应按照上述双重许可,不附加任何额外条款或条件。

无运行时依赖