add scoped thread test
This commit is contained in:
parent
ec003fdd9c
commit
c9b9c17fca
24
src/tools/miri/tests/pass/concurrency/scope.rs
Normal file
24
src/tools/miri/tests/pass/concurrency/scope.rs
Normal file
@ -0,0 +1,24 @@
|
||||
use std::thread;
|
||||
|
||||
fn main() {
|
||||
let mut a = vec![1, 2, 3];
|
||||
let mut x = 0;
|
||||
|
||||
thread::scope(|s| {
|
||||
s.spawn(|| {
|
||||
// We can borrow `a` here.
|
||||
let _s = format!("hello from the first scoped thread: {a:?}");
|
||||
});
|
||||
s.spawn(|| {
|
||||
let _s = format!("hello from the second scoped thread");
|
||||
// We can even mutably borrow `x` here,
|
||||
// because no other threads are using it.
|
||||
x += a[0] + a[2];
|
||||
});
|
||||
let _s = format!("hello from the main thread");
|
||||
});
|
||||
|
||||
// After the scope, we can modify and access our variables again:
|
||||
a.push(4);
|
||||
assert_eq!(x, a.len());
|
||||
}
|
Loading…
Reference in New Issue
Block a user