diff options
author | Craig Tiller <ctiller@google.com> | 2017-04-19 09:06:45 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2017-04-19 09:06:45 -0700 |
commit | 35882485546d77775cddb58422c01df0633ae7b7 (patch) | |
tree | 6576e2aa8efd06ae760140aba9aaeec2fc176d75 /test | |
parent | 932f1c37ac7f6d92ab1a00c7bce735a384f78143 (diff) | |
parent | 7366fe6df380f1860c32b656e778ad33dbc4c5b3 (diff) |
Merge github.com:grpc/grpc into hybrid
Diffstat (limited to 'test')
-rw-r--r-- | test/cpp/qps/client_sync.cc | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc index a020adde51..f8ce2cccbe 100644 --- a/test/cpp/qps/client_sync.cc +++ b/test/cpp/qps/client_sync.cc @@ -153,16 +153,22 @@ class SynchronousStreamingClient final : public SynchronousClient { StartThreads(num_threads_); } ~SynchronousStreamingClient() { + std::vector<std::thread> cleanup_threads; for (size_t i = 0; i < num_threads_; i++) { - auto stream = &stream_[i]; - if (*stream) { - (*stream)->WritesDone(); - Status s = (*stream)->Finish(); - if (!s.ok()) { - gpr_log(GPR_ERROR, "Stream %" PRIuPTR " received an error %s", i, - s.error_message().c_str()); + cleanup_threads.emplace_back([this, i]() { + auto stream = &stream_[i]; + if (*stream) { + (*stream)->WritesDone(); + Status s = (*stream)->Finish(); + if (!s.ok()) { + gpr_log(GPR_ERROR, "Stream %" PRIuPTR " received an error %s", i, + s.error_message().c_str()); + } } - } + }); + } + for (size_t i = 0; i < num_threads_; i++) { + cleanup_threads[i].join(); } } @@ -179,6 +185,8 @@ class SynchronousStreamingClient final : public SynchronousClient { if ((messages_per_stream_ != 0) && (++messages_issued_[thread_idx] < messages_per_stream_)) { return true; + } else if (messages_per_stream_ == 0) { + return true; } else { // Fall through to the below resetting code after finish } |