diff --git a/Cargo.toml b/Cargo.toml index bdbeafa6f..783980246 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -56,7 +56,7 @@ async-task = { version = "1.0.0", optional = true } broadcaster = { version = "0.2.6", optional = true, default-features = false, features = ["default-channels"] } crossbeam-channel = { version = "0.3.9", optional = true } crossbeam-deque = { version = "0.7.1", optional = true } -crossbeam-utils = { version = "0.6.6", optional = true } +crossbeam-utils = { version = "0.7.0", optional = true } futures-core = { version = "0.3.0", optional = true } futures-io = { version = "0.3.0", optional = true } futures-timer = { version = "1.0.2", optional = true } diff --git a/src/task/task_id.rs b/src/task/task_id.rs index 67eee154b..4eea746a0 100644 --- a/src/task/task_id.rs +++ b/src/task/task_id.rs @@ -1,5 +1,6 @@ use std::fmt; -use std::sync::atomic::{AtomicU64, Ordering}; + +use crossbeam_utils::atomic::AtomicCell; /// A unique identifier for a task. /// @@ -18,9 +19,9 @@ pub struct TaskId(pub(crate) u64); impl TaskId { /// Generates a new `TaskId`. pub(crate) fn generate() -> TaskId { - static COUNTER: AtomicU64 = AtomicU64::new(1); + static COUNTER: AtomicCell = AtomicCell::new(1u64); - let id = COUNTER.fetch_add(1, Ordering::Relaxed); + let id = COUNTER.fetch_add(1); if id > u64::max_value() / 2 { std::process::abort(); }