mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-04-28 03:00:18 -04:00
bin/ircd: run four executor threads
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -2653,6 +2653,7 @@ dependencies = [
|
||||
"async-trait",
|
||||
"clap 3.0.7",
|
||||
"darkfi",
|
||||
"easy-parallel",
|
||||
"futures",
|
||||
"log",
|
||||
"rand 0.8.5",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user