1 个不稳定版本
0.1.0 | 2022年12月29日 |
---|
#2044 in 进程宏
8KB
非并行
Rust的进程宏,允许您确保函数不会同时运行。这在集成测试中特别有用,其中写入同一数据库表的测试不应并行运行。
通过在注解函数的开始处获取互斥锁来实现互斥的目的。因此,本质上这个宏是在每个函数开始处编写 MUT.lock().unwrap()
的语法糖。
不同的函数可以同步在不同的互斥锁上。这就是为什么必须将静态互斥锁引用传递给 非并行
注解的原因。
用法
use std::sync::Mutex;
use lazy_static::lazy_static;
use nonparallel::nonparallel;
// Create two locks
lazy_static! { static ref MUT_A: Mutex<()> = Mutex::new(()); }
lazy_static! { static ref MUT_B: Mutex<()> = Mutex::new(()); }
// Mutually exclude parallel runs of functions using those two locks
#[nonparallel(MUT_A)]
fn function_a1() {
// This will not run in parallel to function_a2
}
#[nonparallel(MUT_A)]
fn function_a2() {
// This will not run in parallel to function_a1
}
#[nonparallel(MUT_B)]
fn function_b() {
// This may run in parallel to function_a*
}
许可证
根据您的选择许可
- Apache许可证第2版,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
依赖项
~1.5MB
~35K SLoC