From abccfa4018a407bbe80e8acd0f83c023664ea49a Mon Sep 17 00:00:00 2001 From: Peter Atashian Date: Mon, 19 Jan 2015 05:55:15 -0500 Subject: [PATCH] Impl Send for Timer on Windows Fixes #20943 Signed-off-by: Peter Atashian --- src/libstd/io/timer.rs | 6 ++++++ src/libstd/sys/windows/timer.rs | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/libstd/io/timer.rs b/src/libstd/io/timer.rs index 844a97dea2d50..68ae7d0ff2083 100644 --- a/src/libstd/io/timer.rs +++ b/src/libstd/io/timer.rs @@ -227,6 +227,12 @@ mod test { use thread::Thread; use time::Duration; + #[test] + fn test_timer_send() { + let mut timer = Timer::new().unwrap(); + Thread::spawn(move || timer.sleep(Duration::milliseconds(1))); + } + #[test] fn test_io_timer_sleep_simple() { let mut timer = Timer::new().unwrap(); diff --git a/src/libstd/sys/windows/timer.rs b/src/libstd/sys/windows/timer.rs index 1ae3979cd9acc..12b4e56bf5209 100644 --- a/src/libstd/sys/windows/timer.rs +++ b/src/libstd/sys/windows/timer.rs @@ -48,9 +48,9 @@ pub enum Req { RemoveTimer(libc::HANDLE, Sender<()>), } +unsafe impl Send for Timer {} unsafe impl Send for Req {} - fn helper(input: libc::HANDLE, messages: Receiver, _: ()) { let mut objs = vec![input]; let mut chans = vec![];