Skip to content

Commit

Permalink
Add a test for thread locals.
Browse files Browse the repository at this point in the history
  • Loading branch information
Vytautas Astrauskas committed Apr 3, 2020
1 parent 94c0f92 commit 588c233
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions tests/run-pass/concurrency/thread_locals.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#![feature(thread_local)]

use std::thread;

#[thread_local]
static mut A: u8 = 0;
#[thread_local]
static mut B: u8 = 0;
static mut C: u8 = 0;

unsafe fn get_a_ref() -> *mut u8 {
&mut A
}

fn main() {

unsafe {
let x = get_a_ref();
*x = 5;
assert_eq!(A, 5);
B = 15;
C = 25;
}

thread::spawn(|| {
unsafe {
assert_eq!(A, 0);
assert_eq!(B, 0);
assert_eq!(C, 25);
B = 14;
C = 24;
let y = get_a_ref();
assert_eq!(*y, 0);
*y = 4;
assert_eq!(A, 4);
assert_eq!(*get_a_ref(), 4);

}
}).join().unwrap();

unsafe {
assert_eq!(*get_a_ref(), 5);
assert_eq!(A, 5);
assert_eq!(B, 15);
assert_eq!(C, 24);
}

}

0 comments on commit 588c233

Please sign in to comment.