pub struct ProcessLock(/* private fields */);
Implementations§
Source§impl ProcessLock
提供进程间的共享内存模块
其中unix使用semget, semctl, semop, 其中用特殊的标识位SEM_UNDO来实现, 防止进程意外退出导致的死锁
其实windows使用CreateMutex, ReleaseMutex, WaitForSingleObject来实现
impl ProcessLock
提供进程间的共享内存模块 其中unix使用semget, semctl, semop, 其中用特殊的标识位SEM_UNDO来实现, 防止进程意外退出导致的死锁 其实windows使用CreateMutex, ReleaseMutex, WaitForSingleObject来实现
§Examples, Open Double Process for same
extern crate process_lock;
use std::time::{Duration, Instant};
use process_lock::*;
fn main () {
let mut lock = ProcessLock::new(String::from(".process_lock"), None).unwrap();
for i in 0..100 {
let now = Instant::now();
{
let _guard = lock.lock().unwrap();
println!("success get the {} lock lock all use time ===== {}", i, now.elapsed().as_secs());
let ten_millis = ::std::time::Duration::from_millis(2000);
::std::thread::sleep(ten_millis);
}
let ten_millis = ::std::time::Duration::from_millis(100);
::std::thread::sleep(ten_millis);
}
}
Sourcepub fn new(name: String, path_name: Option<String>) -> Result<ProcessLock>
pub fn new(name: String, path_name: Option<String>) -> Result<ProcessLock>
首先打开命名的进程锁, 如果打开失败, 则创建一个新的进程锁, 并赋与初始变量
Sourcepub fn trylock(&self) -> Result<Option<LockGuard>>
pub fn trylock(&self) -> Result<Option<LockGuard>>
立即返回获取进程锁, 如果成功则返回LockGuard, 如果失败则返回Ok(None), 如果发生错误则返回Error
Auto Trait Implementations§
impl Freeze for ProcessLock
impl RefUnwindSafe for ProcessLock
impl Send for ProcessLock
impl Sync for ProcessLock
impl Unpin for ProcessLock
impl UnwindSafe for ProcessLock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more