更新libclamav库1.0.0版本
This commit is contained in:
104
clamav/libclamav_rust/.cargo/vendor/crossbeam-utils/src/lib.rs
vendored
Normal file
104
clamav/libclamav_rust/.cargo/vendor/crossbeam-utils/src/lib.rs
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
//! Miscellaneous tools for concurrent programming.
|
||||
//!
|
||||
//! ## Atomics
|
||||
//!
|
||||
//! * [`AtomicCell`], a thread-safe mutable memory location.
|
||||
//! * [`AtomicConsume`], for reading from primitive atomic types with "consume" ordering.
|
||||
//!
|
||||
//! ## Thread synchronization
|
||||
//!
|
||||
//! * [`Parker`], a thread parking primitive.
|
||||
//! * [`ShardedLock`], a sharded reader-writer lock with fast concurrent reads.
|
||||
//! * [`WaitGroup`], for synchronizing the beginning or end of some computation.
|
||||
//!
|
||||
//! ## Utilities
|
||||
//!
|
||||
//! * [`Backoff`], for exponential backoff in spin loops.
|
||||
//! * [`CachePadded`], for padding and aligning a value to the length of a cache line.
|
||||
//! * [`scope`], for spawning threads that borrow local variables from the stack.
|
||||
//!
|
||||
//! [`AtomicCell`]: atomic::AtomicCell
|
||||
//! [`AtomicConsume`]: atomic::AtomicConsume
|
||||
//! [`Parker`]: sync::Parker
|
||||
//! [`ShardedLock`]: sync::ShardedLock
|
||||
//! [`WaitGroup`]: sync::WaitGroup
|
||||
//! [`scope`]: thread::scope
|
||||
|
||||
#![doc(test(
|
||||
no_crate_inject,
|
||||
attr(
|
||||
deny(warnings, rust_2018_idioms),
|
||||
allow(dead_code, unused_assignments, unused_variables)
|
||||
)
|
||||
))]
|
||||
#![warn(
|
||||
missing_docs,
|
||||
missing_debug_implementations,
|
||||
rust_2018_idioms,
|
||||
unreachable_pub
|
||||
)]
|
||||
#![cfg_attr(not(feature = "std"), no_std)]
|
||||
|
||||
#[cfg(crossbeam_loom)]
|
||||
#[allow(unused_imports)]
|
||||
mod primitive {
|
||||
pub(crate) mod sync {
|
||||
pub(crate) mod atomic {
|
||||
pub(crate) use loom::sync::atomic::spin_loop_hint;
|
||||
pub(crate) use loom::sync::atomic::{
|
||||
AtomicBool, AtomicI16, AtomicI32, AtomicI64, AtomicI8, AtomicIsize, AtomicU16,
|
||||
AtomicU32, AtomicU64, AtomicU8, AtomicUsize,
|
||||
};
|
||||
|
||||
// FIXME: loom does not support compiler_fence at the moment.
|
||||
// https://github.com/tokio-rs/loom/issues/117
|
||||
// we use fence as a stand-in for compiler_fence for the time being.
|
||||
// this may miss some races since fence is stronger than compiler_fence,
|
||||
// but it's the best we can do for the time being.
|
||||
pub(crate) use loom::sync::atomic::fence as compiler_fence;
|
||||
}
|
||||
pub(crate) use loom::sync::{Arc, Condvar, Mutex};
|
||||
}
|
||||
}
|
||||
#[cfg(not(crossbeam_loom))]
|
||||
#[allow(unused_imports)]
|
||||
mod primitive {
|
||||
pub(crate) mod sync {
|
||||
pub(crate) mod atomic {
|
||||
pub(crate) use core::sync::atomic::compiler_fence;
|
||||
// TODO(taiki-e): once we bump the minimum required Rust version to 1.49+,
|
||||
// use [`core::hint::spin_loop`] instead.
|
||||
#[allow(deprecated)]
|
||||
pub(crate) use core::sync::atomic::spin_loop_hint;
|
||||
#[cfg(not(crossbeam_no_atomic))]
|
||||
pub(crate) use core::sync::atomic::{
|
||||
AtomicBool, AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicU16, AtomicU32,
|
||||
AtomicU8, AtomicUsize,
|
||||
};
|
||||
#[cfg(not(crossbeam_no_atomic_64))]
|
||||
pub(crate) use core::sync::atomic::{AtomicI64, AtomicU64};
|
||||
}
|
||||
|
||||
#[cfg(feature = "std")]
|
||||
pub(crate) use std::sync::{Arc, Condvar, Mutex};
|
||||
}
|
||||
}
|
||||
|
||||
pub mod atomic;
|
||||
|
||||
mod cache_padded;
|
||||
pub use crate::cache_padded::CachePadded;
|
||||
|
||||
mod backoff;
|
||||
pub use crate::backoff::Backoff;
|
||||
|
||||
use cfg_if::cfg_if;
|
||||
|
||||
cfg_if! {
|
||||
if #[cfg(feature = "std")] {
|
||||
pub mod sync;
|
||||
|
||||
#[cfg(not(crossbeam_loom))]
|
||||
pub mod thread;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user