summaryrefslogtreecommitdiff
path: root/src/thread_id.rs
diff options
context:
space:
mode:
authorInna Palant <ipalant@google.com>2023-12-13 13:08:02 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-12-13 13:08:02 +0000
commitdca6b7a419ca8bfc3e6bf90126853e2d437f2d21 (patch)
tree743cda32af04480b2517ad89df0f0b6cf90acafb /src/thread_id.rs
parent8cd41a9edc2f6aba2ba9dc1b159ff1ade4306479 (diff)
parent280eea6ea8dc40e391b92d7aea8e546dfde473cb (diff)
downloadfragile-dca6b7a419ca8bfc3e6bf90126853e2d437f2d21.tar.gz
Merge remote-tracking branch 'origin/upstream' am: 68bc564c6f am: 280eea6ea8
Original change: undetermined Change-Id: I4efa68d9eefa39dfc21e6d2006430fc8d2ff6f88 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'src/thread_id.rs')
-rw-r--r--src/thread_id.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/thread_id.rs b/src/thread_id.rs
new file mode 100644
index 0000000..00468b2
--- /dev/null
+++ b/src/thread_id.rs
@@ -0,0 +1,12 @@
+use std::num::NonZeroUsize;
+use std::sync::atomic::{AtomicUsize, Ordering};
+
+fn next() -> NonZeroUsize {
+ static COUNTER: AtomicUsize = AtomicUsize::new(1);
+ NonZeroUsize::new(COUNTER.fetch_add(1, Ordering::SeqCst)).expect("more than usize::MAX threads")
+}
+
+pub(crate) fn get() -> NonZeroUsize {
+ thread_local!(static THREAD_ID: NonZeroUsize = next());
+ THREAD_ID.with(|&x| x)
+}