Move rare overflow error to a cold function
This commit is contained in:
parent
0e5f520788
commit
1170d73007
@ -47,10 +47,16 @@ pub(super) fn increment_num_running_threads(&self) {
|
|||||||
// chance it overflows to 0, which would result in unsoundness.
|
// chance it overflows to 0, which would result in unsoundness.
|
||||||
if self.num_running_threads.fetch_add(1, Ordering::Relaxed) > usize::MAX / 2 {
|
if self.num_running_threads.fetch_add(1, Ordering::Relaxed) > usize::MAX / 2 {
|
||||||
// This can only reasonably happen by mem::forget()'ing a lot of ScopedJoinHandles.
|
// This can only reasonably happen by mem::forget()'ing a lot of ScopedJoinHandles.
|
||||||
|
self.overflow();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cold]
|
||||||
|
fn overflow(&self) {
|
||||||
self.decrement_num_running_threads(false);
|
self.decrement_num_running_threads(false);
|
||||||
panic!("too many running threads in thread scope");
|
panic!("too many running threads in thread scope");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
pub(super) fn decrement_num_running_threads(&self, panic: bool) {
|
pub(super) fn decrement_num_running_threads(&self, panic: bool) {
|
||||||
if panic {
|
if panic {
|
||||||
self.a_thread_panicked.store(true, Ordering::Relaxed);
|
self.a_thread_panicked.store(true, Ordering::Relaxed);
|
||||||
|
Loading…
Reference in New Issue
Block a user