Использовать основной поток для сервера grpc-rs - PullRequest
1 голос
/ 11 июня 2019

Я использую grpc-rs для gRPC в моем проекте Rust. Во всех примерах, которые я видел до сих пор, я вижу, что сервер может быть запущен с:

let mut server = ServerBuilder::new(env)
        .register_service(service)
        .bind("127.0.0.1", 50_051)
        .build()
        .unwrap();
server.start();
let (tx, rx) = oneshot::channel();
thread::spawn(move || {
    info!("Press ENTER to exit...");
    let _ = io::stdin().read(&mut [0]).unwrap();
    tx.send(())
});
let _ = rx.wait();
let _ = server.shutdown().wait();

Ссылка на полный код .

Проблема в том, что основной поток, который создал сервер, остается неиспользованным (и завершается при нажатии клавиши).

Есть ли способ избежать траты основного потока и вместо этого запустить / запустить сервер gRPC в основном потоке, вызвав метод запуска синхронной блокировки?

...