File tree Expand file tree Collapse file tree 5 files changed +20
-5
lines changed Expand file tree Collapse file tree 5 files changed +20
-5
lines changed Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use super::hermit_abi;
4
4
use crate :: ffi:: CStr ;
5
5
use crate :: mem:: ManuallyDrop ;
6
6
use crate :: num:: NonZero ;
7
- use crate :: time:: Duration ;
7
+ use crate :: time:: { Duration , Instant } ;
8
8
use crate :: { io, ptr} ;
9
9
10
10
pub type Tid = hermit_abi:: Tid ;
Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ use super::unsupported;
5
5
use crate :: ffi:: CStr ;
6
6
use crate :: io;
7
7
use crate :: num:: NonZero ;
8
- use crate :: time:: Duration ;
8
+ use crate :: time:: { Duration , Instant } ;
9
9
10
10
pub struct Thread ( task_queue:: JoinHandle ) ;
11
11
Original file line number Diff line number Diff line change @@ -2,7 +2,7 @@ use crate::ffi::CStr;
2
2
use crate :: mem:: { self , ManuallyDrop } ;
3
3
use crate :: num:: NonZero ;
4
4
use crate :: sys:: os;
5
- use crate :: time:: Duration ;
5
+ use crate :: time:: { Duration , Instant } ;
6
6
use crate :: { cmp, io, ptr} ;
7
7
8
8
pub const DEFAULT_MIN_STACK_SIZE : usize = 8 * 1024 ;
@@ -109,6 +109,14 @@ impl Thread {
109
109
}
110
110
}
111
111
112
+ pub fn sleep_until ( deadline : Instant ) {
113
+ let now = Instant :: now ( ) ;
114
+
115
+ if let Some ( delay) = deadline. checked_duration_since ( now) {
116
+ Self :: sleep ( delay) ;
117
+ }
118
+ }
119
+
112
120
/// must join, because no pthread_detach supported
113
121
pub fn join ( self ) {
114
122
let id = self . into_id ( ) ;
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ use crate::ffi::CStr;
3
3
use crate :: io;
4
4
use crate :: num:: NonZero ;
5
5
use crate :: ptr:: NonNull ;
6
- use crate :: time:: Duration ;
6
+ use crate :: time:: { Duration , Instant } ;
7
7
8
8
pub struct Thread ( !) ;
9
9
@@ -39,6 +39,14 @@ impl Thread {
39
39
}
40
40
}
41
41
42
+ pub fn sleep_until ( deadline : Instant ) {
43
+ let now = Instant :: now ( ) ;
44
+
45
+ if let Some ( delay) = deadline. checked_duration_since ( now) {
46
+ sleep ( delay) ;
47
+ }
48
+ }
49
+
42
50
pub fn join ( self ) {
43
51
self . 0
44
52
}
Original file line number Diff line number Diff line change @@ -297,7 +297,6 @@ impl Thread {
297
297
}
298
298
299
299
#[ cfg( not( any(
300
- target_vendor = "apple" ,
301
300
target_os = "freebsd" ,
302
301
target_os = "netbsd" ,
303
302
target_os = "linux" ,
You can’t perform that action at this time.
0 commit comments