bin/ircd: run four executor threads

This commit is contained in:
ghassmo
2022-03-09 17:47:59 +04:00
parent 947282debc
commit 77a52ea0fe
3 changed files with 28 additions and 6 deletions

1
Cargo.lock generated
View File

@@ -2653,6 +2653,7 @@ dependencies = [
"async-trait",
"clap 3.0.7",
"darkfi",
"easy-parallel",
"futures",
"log",
"rand 0.8.5",

View File

@@ -15,6 +15,7 @@ async-std = "1.10.0"
async-trait = "0.1.52"
async-channel = "1.6.1"
async-executor = "1.4.1"
easy-parallel = "3.2.0"
# Crypto
rand = "0.8.4"

View File

@@ -1,16 +1,18 @@
use async_std::io::BufReader;
use std::{
net::{SocketAddr, TcpListener, TcpStream},
sync::Arc,
};
extern crate clap;
use async_executor::Executor;
use async_std::io::BufReader;
use async_trait::async_trait;
use easy_parallel::Parallel;
use futures::{AsyncBufReadExt, AsyncReadExt, FutureExt};
use log::{debug, error, info, warn};
use serde_json::{json, Value};
use simplelog::{ColorChoice, TermLogger, TerminalMode};
use smol::Async;
use std::{
net::{SocketAddr, TcpListener, TcpStream},
sync::Arc,
};
use darkfi::{
net,
@@ -236,5 +238,23 @@ fn main() -> Result<()> {
TermLogger::init(lvl, cfg, TerminalMode::Mixed, ColorChoice::Auto)?;
let ex = Arc::new(Executor::new());
smol::block_on(ex.run(start(ex.clone(), options)))
let (signal, shutdown) = async_channel::unbounded::<()>();
let ex2 = ex.clone();
// let nthreads = num_cpus::get();
// debug!(target: "IRC DAEMON", "Run {} executor threads", nthreads);
let (_, result) = Parallel::new()
.each(0..4, |_| smol::future::block_on(ex.run(shutdown.recv())))
// Run the main future on the current thread.
.finish(|| {
smol::future::block_on(async move {
start(ex2.clone(), options).await?;
drop(signal);
Ok::<(), darkfi::Error>(())
})
});
result
}