C++ grpc c++;调用CompletionQueue shutdown,但CompletionQueue.next在存在挂起事件时被永久阻止

C++ grpc c++;调用CompletionQueue shutdown,但CompletionQueue.next在存在挂起事件时被永久阻止,c++,grpc,C++,Grpc,有两个线程,一个调用CompletionQueue上的shutdown debug_log("cq shutdown start\n"); cq.Shutdown(); debug_log("cq shutdown success\n"); 在另一个影院,cq.next永远封锁 我可以看到cq中有一个悬而未决的事件, 但从文档中,我预计一旦调用shutdown,cq.next将开始返回false 我不知道这里出了什么问题 下面是cq的调用堆栈 grpc_iocp_wor

有两个线程,一个调用CompletionQueue上的shutdown

    debug_log("cq shutdown start\n");
    cq.Shutdown();
    debug_log("cq shutdown success\n");
在另一个影院,cq.next永远封锁

我可以看到cq中有一个悬而未决的事件, 但从文档中,我预计一旦调用shutdown,cq.next将开始返回false

我不知道这里出了什么问题

下面是cq的调用堆栈

grpc_iocp_work(grpc_exec_ctx * exec_ctx, gpr_timespec deadline) Line 83 C
grpc_pollset_work(grpc_exec_ctx * exec_ctx, grpc_pollset * pollset, grpc_pollset_worker * * worker_hdl, gpr_timespec now, gpr_timespec deadline) Line 143   C
cq_next(grpc_completion_queue * cc, gpr_timespec deadline, void * reserved) Line 844    C
grpc_completion_queue_next(grpc_completion_queue * cc, gpr_timespec deadline, void * reserved) Line 873 C
grpc::CompletionQueue::AsyncNextInternal(void * * tag, bool * ok, gpr_timespec deadline) Line 71    C++
grpc::CompletionQueue::Next(void * * tag, bool * ok) Line 151   C++

API表示cq。一旦您耗尽cq,Next将返回false。我不确定您所说的一个挂起事件是什么意思,但如果它不是关机事件,您的cq.Next仍将等待该事件返回,然后再返回false(在下一次调用中)