Skip to content

Commit a94040f

Browse files
committed
Fallout: move from scoped to spawn
1 parent 6e0fb70 commit a94040f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+101
-69
lines changed

src/librustdoc/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ struct Output {
130130

131131
pub fn main() {
132132
const STACK_SIZE: usize = 32000000; // 32MB
133-
let res = std::thread::Builder::new().stack_size(STACK_SIZE).scoped(move || {
133+
let res = std::thread::Builder::new().stack_size(STACK_SIZE).spawn(move || {
134134
let s = env::args().collect::<Vec<_>>();
135135
main_args(&s)
136-
}).unwrap().join();
136+
}).unwrap().join().unwrap();
137137
env::set_exit_status(res as i32);
138138
}
139139

src/test/run-fail/panic-task-name-owned.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
use std::thread::Builder;
1414

1515
fn main() {
16-
let r: () = Builder::new().name("owned name".to_string()).scoped(move|| {
16+
let r: () = Builder::new().name("owned name".to_string()).spawn(move|| {
1717
panic!("test");
1818
()
19-
}).unwrap().join();
19+
}).unwrap().join().unwrap();
2020
panic!();
2121
}

src/test/run-fail/rt-set-exit-status-panic2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn r(x:isize) -> r {
3737

3838
fn main() {
3939
error!("whatever");
40-
let _t = thread::scoped(move|| {
40+
let _t = thread::spawn(move|| {
4141
let _i = r(5);
4242
});
4343
panic!();

src/test/run-pass/atomic-print.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ fn main(){
2727
if env::args().count() == 2 {
2828
let barrier = sync::Arc::new(sync::Barrier::new(2));
2929
let tbarrier = barrier.clone();
30-
let t = thread::scoped(||{
30+
let t = thread::spawn(move || {
3131
tbarrier.wait();
3232
do_print(1);
3333
});

src/test/run-pass/capturing-logging.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,13 @@ impl Logger for MyWriter {
3636
fn main() {
3737
let (tx, rx) = channel();
3838
let (mut r, w) = (ChanReader::new(rx), ChanWriter::new(tx));
39-
let _t = thread::scoped(move|| {
39+
let t = thread::spawn(move|| {
4040
set_logger(box MyWriter(w) as Box<Logger+Send>);
4141
debug!("debug");
4242
info!("info");
4343
});
4444
let s = r.read_to_string().unwrap();
4545
assert!(s.contains("info"));
4646
assert!(!s.contains("debug"));
47+
t.join();
4748
}

src/test/run-pass/clone-with-exterior.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ struct Pair {
2323
pub fn main() {
2424
let z: Box<_> = box Pair { a : 10, b : 12};
2525

26-
let _t = thread::scoped(move|| {
26+
thread::spawn(move|| {
2727
assert_eq!(z.a, 10);
2828
assert_eq!(z.b, 12);
29-
});
29+
}).join();
3030
}

src/test/run-pass/comm.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ use std::sync::mpsc::{channel, Sender};
1515

1616
pub fn main() {
1717
let (tx, rx) = channel();
18-
let _t = thread::scoped(move|| { child(&tx) });
18+
let t = thread::spawn(move|| { child(&tx) });
1919
let y = rx.recv().unwrap();
2020
println!("received");
2121
println!("{}", y);
2222
assert_eq!(y, 10);
23+
t.join();
2324
}
2425

2526
fn child(c: &Sender<isize>) {

src/test/run-pass/extern-call-deep2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn count(n: libc::uintptr_t) -> libc::uintptr_t {
4242
pub fn main() {
4343
// Make sure we're on a task with small Rust stacks (main currently
4444
// has a large stack)
45-
thread::scoped(move|| {
45+
thread::spawn(move|| {
4646
let result = count(1000);
4747
println!("result = {}", result);
4848
assert_eq!(result, 1000);

src/test/run-pass/extern-call-scrub.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ fn count(n: libc::uintptr_t) -> libc::uintptr_t {
4646
pub fn main() {
4747
// Make sure we're on a task with small Rust stacks (main currently
4848
// has a large stack)
49-
let _t = thread::scoped(move|| {
49+
thread::spawn(move|| {
5050
let result = count(12);
5151
println!("result = {}", result);
5252
assert_eq!(result, 2048);
53-
});
53+
}).join();
5454
}

src/test/run-pass/fds-are-cloexec.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,19 @@ fn main() {
3434

3535
fn parent() {
3636
let file = File::open("Makefile").unwrap();
37-
let _dir = fs::read_dir("/").unwrap();
3837
let tcp1 = TcpListener::bind("127.0.0.1:0").unwrap();
39-
assert_eq!(tcp1.as_raw_fd(), file.as_raw_fd() + 2);
4038
let tcp2 = tcp1.try_clone().unwrap();
4139
let addr = tcp1.local_addr().unwrap();
42-
let t = thread::scoped(|| TcpStream::connect(addr).unwrap());
40+
let t = thread::spawn(move || TcpStream::connect(addr).unwrap());
4341
let tcp3 = tcp1.accept().unwrap().0;
44-
let tcp4 = t.join();
42+
let tcp4 = t.join().unwrap();
4543
let tcp5 = tcp3.try_clone().unwrap();
4644
let tcp6 = tcp4.try_clone().unwrap();
4745
let udp1 = UdpSocket::bind("127.0.0.1:0").unwrap();
4846
let udp2 = udp1.try_clone().unwrap();
4947

5048
let status = Command::new(env::args().next().unwrap())
5149
.arg(file.as_raw_fd().to_string())
52-
.arg((file.as_raw_fd() + 1).to_string())
5350
.arg(tcp1.as_raw_fd().to_string())
5451
.arg(tcp2.as_raw_fd().to_string())
5552
.arg(tcp3.as_raw_fd().to_string())

src/test/run-pass/init-large-type.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const SIZE: usize = 1024 * 1024;
2626

2727
fn main() {
2828
// do the test in a new thread to avoid (spurious?) stack overflows
29-
let _ = thread::scoped(|| {
29+
thread::spawn(|| {
3030
let _memory: [u8; SIZE] = unsafe { init() };
3131
}).join();
3232
}

src/test/run-pass/issue-13494.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fn helper(rx: Receiver<Sender<()>>) {
2626

2727
fn main() {
2828
let (tx, rx) = channel();
29-
let _t = thread::scoped(move|| { helper(rx) });
29+
let t = thread::spawn(move|| { helper(rx) });
3030
let (snd, rcv) = channel::<isize>();
3131
for _ in 1..100000 {
3232
snd.send(1).unwrap();
@@ -38,4 +38,5 @@ fn main() {
3838
}
3939
}
4040
drop(tx);
41+
t.join();
4142
}

src/test/run-pass/issue-20454.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
use std::thread;
1414

1515
fn _foo() {
16-
let _t = thread::scoped(move || { // no need for -> ()
16+
thread::spawn(move || { // no need for -> ()
1717
loop {
1818
println!("hello");
1919
}
20-
});
20+
}).join();
2121
}
2222

2323
fn main() {}

src/test/run-pass/issue-3609.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ enum Msg
2323
}
2424

2525
fn foo(name: String, samples_chan: Sender<Msg>) {
26-
let _t = thread::scoped(move|| {
26+
thread::spawn(move|| {
2727
let mut samples_chan = samples_chan;
2828

2929
// FIXME (#22405): Replace `Box::new` with `box` here when/if possible.
@@ -34,7 +34,7 @@ fn foo(name: String, samples_chan: Sender<Msg>) {
3434
});
3535

3636
samples_chan.send(Msg::GetSamples(name.clone(), callback));
37-
});
37+
}).join();
3838
}
3939

4040
pub fn main() {}

src/test/run-pass/issue-9396.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::time::Duration;
1919

2020
pub fn main() {
2121
let (tx, rx) = channel();
22-
let _t = thread::scoped(move||{
22+
let t = thread::spawn(move||{
2323
let mut timer = Timer::new().unwrap();
2424
timer.sleep(Duration::milliseconds(10));
2525
tx.send(()).unwrap();
@@ -31,4 +31,5 @@ pub fn main() {
3131
Err(TryRecvError::Disconnected) => unreachable!()
3232
}
3333
}
34+
t.join();
3435
}

src/test/run-pass/ivec-tag.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ fn producer(tx: &Sender<Vec<u8>>) {
2323

2424
pub fn main() {
2525
let (tx, rx) = channel::<Vec<u8>>();
26-
let _prod = thread::scoped(move|| {
26+
let prod = thread::spawn(move|| {
2727
producer(&tx)
2828
});
2929

3030
let _data: Vec<u8> = rx.recv().unwrap();
31+
prod.join();
3132
}

src/test/run-pass/kindck-implicit-close-over-mut-var.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -18,36 +18,39 @@ fn foo() {
1818
// Here, i is *copied* into the proc (heap closure).
1919
// Requires allocation. The proc's copy is not mutable.
2020
let mut i = 0;
21-
let _t = thread::scoped(move|| {
21+
let t = thread::spawn(move|| {
2222
user(i);
2323
println!("spawned {}", i)
2424
});
2525
i += 1;
26-
println!("original {}", i)
26+
println!("original {}", i);
27+
t.join();
2728
}
2829

2930
fn bar() {
3031
// Here, the original i has not been moved, only copied, so is still
3132
// mutable outside of the proc.
3233
let mut i = 0;
3334
while i < 10 {
34-
let _t = thread::scoped(move|| {
35+
let t = thread::spawn(move|| {
3536
user(i);
3637
});
3738
i += 1;
39+
t.join();
3840
}
3941
}
4042

4143
fn car() {
4244
// Here, i must be shadowed in the proc to be mutable.
4345
let mut i = 0;
4446
while i < 10 {
45-
let _t = thread::scoped(move|| {
47+
let t = thread::spawn(move|| {
4648
let mut i = i;
4749
i += 1;
4850
user(i);
4951
});
5052
i += 1;
53+
t.join();
5154
}
5255
}
5356

src/test/run-pass/moves-based-on-type-capture-clause.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::thread;
1414

1515
pub fn main() {
1616
let x = "Hello world!".to_string();
17-
let _t = thread::scoped(move|| {
17+
thread::spawn(move|| {
1818
println!("{}", x);
19-
});
19+
}).join();
2020
}

src/test/run-pass/out-of-stack-new-thread-no-split.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ fn recurse() {
3737
fn main() {
3838
let args: Vec<String> = env::args().collect();
3939
if args.len() > 1 && args[1] == "recurse" {
40-
let _t = thread::scoped(recurse);
40+
thread::spawn(recurse).join();
4141
} else {
4242
let recurse = Command::new(&args[0]).arg("recurse").output().unwrap();
4343
assert!(!recurse.status.success());

src/test/run-pass/rust-log-filter.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ impl log::Logger for ChannelLogger {
4141
pub fn main() {
4242
let (logger, rx) = ChannelLogger::new();
4343

44-
let _t = thread::scoped(move|| {
44+
let t = thread::spawn(move|| {
4545
log::set_logger(logger);
4646

4747
info!("foo");
@@ -54,4 +54,6 @@ pub fn main() {
5454
assert_eq!(rx.recv().unwrap(), "foo bar");
5555
assert_eq!(rx.recv().unwrap(), "bar foo");
5656
assert!(rx.recv().is_err());
57+
58+
t.join();
5759
}

src/test/run-pass/send-is-not-static-par-for.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
// pretty-expanded FIXME #23616
1212

13-
#![feature(core, std_misc)]
13+
#![feature(core, std_misc, scoped)]
1414
use std::thread;
1515
use std::sync::Mutex;
1616

@@ -25,7 +25,6 @@ fn par_for<I, F>(iter: I, f: F)
2525
f(elem)
2626
})
2727
}).collect();
28-
2928
}
3029

3130
fn sum(x: &[i32]) {

src/test/run-pass/send-resource.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ fn test(f: isize) -> test {
3232
pub fn main() {
3333
let (tx, rx) = channel();
3434

35-
let _t = thread::scoped(move|| {
35+
let t = thread::spawn(move|| {
3636
let (tx2, rx2) = channel();
3737
tx.send(tx2).unwrap();
3838

3939
let _r = rx2.recv().unwrap();
4040
});
4141

4242
rx.recv().unwrap().send(test(42)).unwrap();
43+
44+
t.join();
4345
}

src/test/run-pass/spawn-fn.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ fn x(s: String, n: isize) {
1616
}
1717

1818
pub fn main() {
19-
let _t = thread::scoped(|| x("hello from first spawned fn".to_string(), 65) );
20-
let _t = thread::scoped(|| x("hello from second spawned fn".to_string(), 66) );
21-
let _t = thread::scoped(|| x("hello from third spawned fn".to_string(), 67) );
19+
let t1 = thread::spawn(|| x("hello from first spawned fn".to_string(), 65) );
20+
let t2 = thread::spawn(|| x("hello from second spawned fn".to_string(), 66) );
21+
let t3 = thread::spawn(|| x("hello from third spawned fn".to_string(), 67) );
2222
let mut i = 30;
2323
while i > 0 {
2424
i = i - 1;
2525
println!("parent sleeping");
2626
thread::yield_now();
2727
}
28+
t1.join();
29+
t2.join();
30+
t3.join();
2831
}

src/test/run-pass/task-comm-0.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ fn test05_start(tx : &Sender<isize>) {
2626

2727
fn test05() {
2828
let (tx, rx) = channel();
29-
let _t = thread::scoped(move|| { test05_start(&tx) });
29+
let t = thread::spawn(move|| { test05_start(&tx) });
3030
let mut value: isize = rx.recv().unwrap();
3131
println!("{}", value);
3232
value = rx.recv().unwrap();
3333
println!("{}", value);
3434
value = rx.recv().unwrap();
3535
println!("{}", value);
3636
assert_eq!(value, 30);
37+
t.join();
3738
}

src/test/run-pass/task-comm-1.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ pub fn main() { test00(); }
1717
fn start() { println!("Started / Finished task."); }
1818

1919
fn test00() {
20-
let _ = thread::scoped(move|| start() ).join();
20+
thread::spawn(move|| start() ).join();
2121
println!("Completing.");
2222
}

src/test/run-pass/task-comm-10.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,12 @@ fn start(tx: &Sender<Sender<String>>) {
2929

3030
pub fn main() {
3131
let (tx, rx) = channel();
32-
let _child = thread::scoped(move|| { start(&tx) });
32+
let child = thread::spawn(move|| { start(&tx) });
3333

3434
let mut c = rx.recv().unwrap();
3535
c.send("A".to_string()).unwrap();
3636
c.send("B".to_string()).unwrap();
3737
thread::yield_now();
38+
39+
child.join();
3840
}

src/test/run-pass/task-comm-11.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ fn start(tx: &Sender<Sender<isize>>) {
2222

2323
pub fn main() {
2424
let (tx, rx) = channel();
25-
let _child = thread::scoped(move|| {
25+
let child = thread::spawn(move|| {
2626
start(&tx)
2727
});
2828
let _tx = rx.recv().unwrap();
29+
child.join();
2930
}

0 commit comments

Comments
 (0)