我试图编译以下看似简单的代码,但出现错误:
use std::io::Error;
#[derive(Debug)]
struct NetworkConfig {
bind: String,
node_key_file: String,
}
async fn network_handler(network_config: &NetworkConfig) -> Result<(), Error> {
Ok(())
}
async fn run(network_config: &NetworkConfig) -> Result<(), Error> {
let network_config_copy = network_config.clone();
tokio::spawn(async move {
network_handler(&network_config_copy).await
}).await?
}
Run Code Online (Sandbox Code Playgroud)
use std::io::Error;
#[derive(Debug)]
struct NetworkConfig {
bind: String,
node_key_file: String,
}
async fn network_handler(network_config: &NetworkConfig) -> Result<(), Error> {
Ok(())
}
async fn run(network_config: &NetworkConfig) -> Result<(), Error> {
let network_config_copy = network_config.clone();
tokio::spawn(async move {
network_handler(&network_config_copy).await
}).await?
}
Run Code Online (Sandbox Code Playgroud)
从之前关于该主题的讨论和示例中,我了解到传递对 …
我正在使用boost.asio编写一个性能关键的双向流服务器.
服务器以这种方式工作:
多个客户端同时运行,每个客户端都有自己的连接套接字,每个客户端必须同时执行两项操作:
此外,性能和多核可扩展性在此应用程序中至关重要.
标准的异步方法在这里失败(发送回调可能会在等待新对象发送时阻止其他回调)和阻塞方法(每个方向使用1个线程)很复杂,我无法弄清楚如何处理其中一个线程出错.
我应该为每个客户端使用2个插槽(一个用于输出,一个用于输入)?或者可能以某种方式在每个套接字上使用两个io_services,在两个不同的线程上进行并发回调支持?
请解释一下你将如何应对这种情况.谢谢.
async-await ×1
boost ×1
boost-asio ×1
c++ ×1
duplex ×1
lifetime ×1
rust ×1
rust-tokio ×1
streaming ×1