cpp2sky
cpp2sky copied to clipboard
cpu 100% problem
@wu-sheng My project include cpp2sky to report tracing data, i find one thread cost cpu 100%,afer debug i think find a bug:
void TracerImpl::run() {
void* got_tag;
bool ok = false;
while (true) {
// TODO(shikugawa): cleanup evloop handler.
if (cds_timer_ != nullptr && cds_timer_->check()) {
cdsRequest();
}
grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
&got_tag, &ok, gpr_time_from_nanos(0, GPR_CLOCK_REALTIME));
here should be GPR_TIMESPAN, so i fix like follow in my local branch :
void* got_tag;
bool ok = false;
while (true) {
// TODO(shikugawa): cleanup evloop handler.
if (cds_timer_ != nullptr && cds_timer_->check()) {
cdsRequest();
}
#if 0
grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
&got_tag, &ok, gpr_time_from_nanos(0, GPR_CLOCK_REALTIME));
#endif
grpc::CompletionQueue::NextStatus status = cq_.AsyncNext(
&got_tag, &ok, gpr_time_from_nanos(100000000, GPR_TIMESPAN));
switch (status) {
case grpc::CompletionQueue::TIMEOUT:
continue;
case grpc::CompletionQueue::SHUTDOWN:
return;
case grpc::CompletionQueue::GOT_EVENT:
break;
}
static_cast<StreamCallbackTag*>(got_tag)->callback(!ok);
}
}
ping @wbpcode
here should be GPR_TIMESPAN, so i fix like follow in my local branch :
I am not very familiar to the gRPC lib and didn't use the grpc client in this sky2cpp lib. So, feel free to point out if I am wrong.
The AsyncNext
method here take a deadline
parameter, seems it shouldn't be a type of GPR_TIMESPAN
.
Can you paste a link or doc here to tell why GPR_TIMESPAN
should be used here?
here should be GPR_TIMESPAN, so i fix like follow in my local branch :
I am not very familiar to the gRPC lib and didn't use the grpc client in this sky2cpp lib. So, feel free to point out if I am wrong. The
AsyncNext
method here take adeadline
parameter, seems it shouldn't be a type ofGPR_TIMESPAN
.Can you paste a link or doc here to tell why
GPR_TIMESPAN
should be used here?
code is best doument , practice is best guid