make number of compute threads configurable
All checks were successful
Build / build (push) Successful in 1m15s
All checks were successful
Build / build (push) Successful in 1m15s
This commit is contained in:
@ -1,4 +1,7 @@
|
|||||||
use std::env;
|
use std::{
|
||||||
|
env,
|
||||||
|
sync::atomic::{AtomicUsize, Ordering},
|
||||||
|
};
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
Router,
|
Router,
|
||||||
@ -21,6 +24,8 @@ use tokio::{
|
|||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static THREADS: AtomicUsize = AtomicUsize::new(1);
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
env_logger::init();
|
env_logger::init();
|
||||||
@ -32,6 +37,17 @@ async fn main() {
|
|||||||
.route("/move", post(get_move))
|
.route("/move", post(get_move))
|
||||||
.route("/end", post(end));
|
.route("/end", post(end));
|
||||||
|
|
||||||
|
let threads = env::var("THREADS")
|
||||||
|
.ok()
|
||||||
|
.and_then(|threads| {
|
||||||
|
threads
|
||||||
|
.parse()
|
||||||
|
.inspect_err(|err| error!("Unable to parse number of threads: {err}"))
|
||||||
|
.ok()
|
||||||
|
})
|
||||||
|
.unwrap_or(1);
|
||||||
|
THREADS.store(threads, Ordering::Relaxed);
|
||||||
|
|
||||||
debug!("Creating listener");
|
debug!("Creating listener");
|
||||||
let port = env::var("PORT").unwrap_or_else(|_| "8000".into());
|
let port = env::var("PORT").unwrap_or_else(|_| "8000".into());
|
||||||
let listener = TcpListener::bind(format!("0.0.0.0:{port}")).await.unwrap();
|
let listener = TcpListener::bind(format!("0.0.0.0:{port}")).await.unwrap();
|
||||||
@ -104,7 +120,7 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
|
|||||||
_ => score_standard,
|
_ => score_standard,
|
||||||
};
|
};
|
||||||
|
|
||||||
let action_futures = (0..3).map(|_| {
|
let action_futures = (0..THREADS.load(Ordering::Relaxed)).map(|_| {
|
||||||
let request = request.clone();
|
let request = request.clone();
|
||||||
let board = board.clone();
|
let board = board.clone();
|
||||||
let mut rng = SmallRng::from_os_rng();
|
let mut rng = SmallRng::from_os_rng();
|
||||||
|
Reference in New Issue
Block a user