C++ grpc同步服务器限制句柄线程
我使用grpc cpp示例“HelloWorld”代码来测试限制句柄线程。但是我找不到任何方法来做 grpc版本:1.15 linux:ubuntu 16.04 我将生成器设置为:C++ grpc同步服务器限制句柄线程,c++,multithreading,grpc,C++,Multithreading,Grpc,我使用grpc cpp示例“HelloWorld”代码来测试限制句柄线程。但是我找不到任何方法来做 grpc版本:1.15 linux:ubuntu 16.04 我将生成器设置为: builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MIN_POLLERS, 1); builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS, 1); bui
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MIN_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::NUM_CQS, 1);
class GreeterServiceImpl final : public Greeter::Service {
Status SayHello(ServerContext* context, const HelloRequest* request,
HelloReply* reply) override {
std::string prefix("Hello ");
std::cout << "start " << std::this_thread::get_id() << std::endl;
reply->set_message(prefix + request->name());
//**** sleep 5s, keep this thread block ****
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "end " << std::this_thread::get_id() << std::endl;
return Status::OK;
}
};
如下所示设置手柄:
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MIN_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::NUM_CQS, 1);
class GreeterServiceImpl final : public Greeter::Service {
Status SayHello(ServerContext* context, const HelloRequest* request,
HelloReply* reply) override {
std::string prefix("Hello ");
std::cout << "start " << std::this_thread::get_id() << std::endl;
reply->set_message(prefix + request->name());
//**** sleep 5s, keep this thread block ****
std::this_thread::sleep_for(std::chrono::seconds(5));
std::cout << "end " << std::this_thread::get_id() << std::endl;
return Status::OK;
}
};
class GreeterServiceImpl final:公共问候者::服务{
状态SayHello(ServerContext*context,const HelloRequest*request,
HelloReply*回复)覆盖{
字符串前缀(“Hello”);
std::cout您正在使用的是sync API,它将在每次调用时启动一个线程。您可以查看异步API以减少线程数。您可以通过以下方式使用SetMaxThread:
grpc::ResourceQuota rq;
rq.SetMaxThreads(n);
builder.SetResourceQuota(rq);
似乎每个完成队列都需要一个线程,所以当您有一个完成队列时,如果n=4,则剩下3个线程用于处理请求