2 个版本
0.1.2 | 2024年1月19日 |
---|---|
0.1.1 |
|
0.1.0 | 2023年7月18日 |
#338 在 并发 中
5,989 每月下载量
在 17 个 Crates (7 个直接) 中使用
61KB
575 行
wasm_sync
wasm_sync
提供在浏览器和本地环境中工作的同步原语。
在 Web 浏览器中,主线程上使用原子等待指令会导致错误 [链接]。这阻止了在 Web 环境中使用标准库同步原语。 wasm_sync
通过在主线程上进行忙等待来解决此问题。其他线程(如专用 Web Worker)仍然使用原子等待指令。
在本地平台上,wasm_sync
简单地重新导出标准库的同步原语。
支持的原始类型
wasm_sync::Condvar
wasm_sync::Mutex
wasm_sync::RwLock
wasm_sync::Once
wasm_sync::OnceLock
使用方法
而不是导入标准库原语,导入 wasm_sync
变体。例如
use std::sync::Arc;
use std::thread;
use wasm_sync::Mutex;
let mutex = Arc::new(Mutex::new(0));
let c_mutex = Arc::clone(&mutex);
thread::spawn(move || {
*c_mutex.lock().unwrap() = 10;
}).join().expect("thread::spawn failed");
assert_eq!(*mutex.lock().unwrap(), 10);
依赖项
~0–2MB
~40K SLoC