当前位置: 首页 > 知识库问答 >
问题:

将grpc服务器创建为非阻塞服务器

扶冠宇
2023-03-14

我有一个方法startServer(),可以启动一个简单的cpp grpc服务器。

我想做服务器-

我仔细研究了grpc服务器的异步风格,但没有发现任何简单的例子可以在不增加额外开销的情况下做到这一点。除了在一个单独的线程上运行这个函数外,还有什么简单的方法可以使这个函数不阻塞吗?

void GrpcIface::startServer() {
    std::string address("0.0.0.0:5000");
    GrpcIface service;
    grpc::ServerBuilder builder;
    builder.AddListeningPort(address, grpc::InsecureServerCredentials());
    builder.RegisterService(&service);    
    std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
    std::cout << "GrpcIface :: Server listening on port: " << address << std::endl;
    server->Wait();
}

共有1个答案

段干弘毅
2023-03-14

如果我错了,请纠正我,但我认为Wait()不是必须的。它至少在源代码中看起来不像。或者你说的什么意思

无需处理维护完成队列或处理RPC调用的任何额外开销。

?

 类似资料:
  • 现在我们已经知道了Java NIO里面那些非阻塞特性是怎么工作的,但是要设计一个非阻塞的服务仍旧比较困难。非阻塞IO相对传统的阻塞IO给开发者带来了更多的挑战。在本节非阻塞服务的讲解中,我们一起来讨论这些会面临的主要挑战,同时也会给出一些潜在的解决方案。 查找关于设计非阻塞服务的相关资料是比较难的,本文提出的解决方案也只能是基于笔者个人的工作经验,构思。如果你有其他的解决方案或者是更好的点子,那么

  • 主要内容:1 非阻塞服务器-GitHub仓库,2 无阻塞IO管道,3 非阻塞与阻塞IO管道,4 基本的无阻塞IO管道设计,5 读取部分消息,6 存储部分消息,7 编写部分消息,8 总结,9 服务器线程模型即使你了解了Java NIO非阻塞功能如何工作(Selector,Channel, Buffer等),设计一个无阻塞服务器仍然很难。与阻塞IO相比,非阻塞IO包含多个挑战。这份非阻塞服务器教程将讨论非阻塞服务器的主要挑战,并为它们描述一些潜在的解决方案。 本教程中描述的思想是围绕Java NIO

  • 本文向大家介绍轻松创建nodejs服务器(9):实现非阻塞操作,包括了轻松创建nodejs服务器(9):实现非阻塞操作的使用技巧和注意事项,需要的朋友参考一下 我们要将response对象(从服务器的回调函数onRequest()获取)通过请求路由传递给请求处理程序。随后,处理程序就可以采用该对象上的函数来对请求作出响应。 我们先对server.js做出修改: 我们将response对象作为第三个

  • 我正在研究反应式编程,我怀疑它是否是非阻塞IO的Java REST web服务的实现。Java Servlet 3.1规范引入了一些接口,以实现非阻塞web请求。 我的问题是: Netty是否实现了该规范,而Tomcat、JBoss和Jetty没有实现 谢谢。

  • 本文向大家介绍轻松创建nodejs服务器(8):非阻塞是如何实现的,包括了轻松创建nodejs服务器(8):非阻塞是如何实现的的使用技巧和注意事项,需要的朋友参考一下 这节我们来了解一下nodejs实现非阻塞操作的方法。 我们先来修改一下 start的处理程序: 这段代码,创建了一个新的变量content(初始值为“empty”),执行“ls -lah”命令,将结果赋值给content,最后将co

  • 创建 http 服务器 package main   import ( "net/http"   "github.com/hprose/hprose-golang/rpc" )   func hello(name string) string { return "Hello " + name + "!" }   func main() { service := rp