Also need to create a vector of streams
diff --git a/test/cpp/qps/client_sync.cc b/test/cpp/qps/client_sync.cc
index 565b8dc..2642935 100644
--- a/test/cpp/qps/client_sync.cc
+++ b/test/cpp/qps/client_sync.cc
@@ -99,25 +99,27 @@
 class SynchronousStreamingClient GRPC_FINAL : public SynchronousClient {
  public:
   SynchronousStreamingClient(const ClientConfig& config)
-      : SynchronousClient(config), context_(num_threads_) {
+    : SynchronousClient(config), context_(num_threads_), stream_(num_threads_) {
     for (size_t thread_idx = 0; thread_idx < num_threads_; thread_idx++) {
       auto* stub = channels_[thread_idx % channels_.size()].get_stub();
-      stream_ = stub->StreamingCall(&context_[thread_idx]);
+      stream_[thread_idx] = stub->StreamingCall(&context_[thread_idx]);
     }
     StartThreads(num_threads_);
   }
   ~SynchronousStreamingClient() {
     EndThreads();
-    if (stream_) {
-      SimpleResponse response;
-      stream_->WritesDone();
-      EXPECT_TRUE(stream_->Finish().IsOk());
+    for (auto stream = stream_.begin(); stream != stream_.end(); stream++) {
+      if (*stream) {
+	(*stream)->WritesDone();
+	EXPECT_TRUE((*stream)->Finish().IsOk());
+      }
     }
   }
 
   bool ThreadFunc(Histogram* histogram, size_t thread_idx) GRPC_OVERRIDE {
     double start = Timer::Now();
-    if (stream_->Write(request_) && stream_->Read(&responses_[thread_idx])) {
+    if (stream_[thread_idx]->Write(request_) &&
+	stream_[thread_idx]->Read(&responses_[thread_idx])) {
       histogram->Add((Timer::Now() - start) * 1e9);
       return true;
     }
@@ -126,8 +128,8 @@
 
  private:
   std::vector<grpc::ClientContext> context_;
-  std::unique_ptr<grpc::ClientReaderWriter<SimpleRequest, SimpleResponse>>
-      stream_;
+  std::vector<std::unique_ptr<grpc::ClientReaderWriter<
+				SimpleRequest, SimpleResponse>>> stream_;
 };
 
 std::unique_ptr<Client> CreateSynchronousUnaryClient(