File tree 2 files changed +29
-3
lines changed
2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change 230
230
//! default-features = false
231
231
//! features = ["alloc"]
232
232
//! ```
233
+ //!
234
+ //! # Runtime configuration
235
+ //!
236
+ //! Several environment variables are available to tune the async-std
237
+ //! runtime:
238
+ //!
239
+ //! * `ASYNC_STD_THREAD_COUNT`: The number of threads that the
240
+ //! async-std runtime will start. By default, this is one per logical
241
+ //! cpu as reported by the [num_cpus](num_cpus) crate, which may be
242
+ //! different than the number of physical cpus. Async-std _will panic_
243
+ //! if this is set to any value other than a positive integer.
244
+ //! * `ASYNC_STD_THREAD_NAME`: The name that async-std's runtime
245
+ //! threads report to the operating system. The default value is
246
+ //! `"async-std/runtime"`.
247
+ //!
233
248
234
249
#![ cfg_attr( not( feature = "std" ) , no_std) ]
235
250
#![ cfg_attr( feature = "docs" , feature( doc_cfg) ) ]
Original file line number Diff line number Diff line change 1
1
//! The runtime.
2
2
3
+ use std:: env;
3
4
use std:: thread;
4
5
5
6
use once_cell:: sync:: Lazy ;
@@ -12,10 +13,20 @@ pub struct Runtime {}
12
13
/// The global runtime.
13
14
pub static RUNTIME : Lazy < Runtime > = Lazy :: new ( || {
14
15
// Create an executor thread pool.
15
- let num_threads = num_cpus:: get ( ) . max ( 1 ) ;
16
- for _ in 0 ..num_threads {
16
+
17
+ let thread_count = env:: var ( "ASYNC_STD_THREAD_COUNT" )
18
+ . map ( |env| {
19
+ env. parse ( )
20
+ . expect ( "ASYNC_STD_THREAD_COUNT must be a number" )
21
+ } )
22
+ . unwrap_or_else ( |_| num_cpus:: get ( ) )
23
+ . max ( 1 ) ;
24
+
25
+ let thread_name = env:: var ( "ASYNC_STD_THREAD_NAME" ) . unwrap_or ( "async-std/runtime" . to_string ( ) ) ;
26
+
27
+ for _ in 0 ..thread_count {
17
28
thread:: Builder :: new ( )
18
- . name ( "async-std/runtime" . to_string ( ) )
29
+ . name ( thread_name . clone ( ) )
19
30
. spawn ( || smol:: run ( future:: pending :: < ( ) > ( ) ) )
20
31
. expect ( "cannot start a runtime thread" ) ;
21
32
}
You can’t perform that action at this time.
0 commit comments