diff options
-rw-r--r-- | test/core/util/passthru_endpoint.c | 2 | ||||
-rw-r--r-- | test/core/util/passthru_endpoint.h | 4 | ||||
-rw-r--r-- | test/cpp/microbenchmarks/fullstack_fixtures.h | 4 |
3 files changed, 7 insertions, 3 deletions
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c index 1bf2888503..ed39255294 100644 --- a/test/core/util/passthru_endpoint.c +++ b/test/core/util/passthru_endpoint.c @@ -82,7 +82,7 @@ static void me_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep, half *m = other_half((half *)ep); gpr_mu_lock(&m->parent->mu); grpc_error *error = GRPC_ERROR_NONE; - m->parent->stats->num_writes++; + gpr_atm_no_barrier_fetch_add(&m->parent->stats->num_writes, (gpr_atm)1); if (m->parent->shutdown) { error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown"); } else if (m->on_read != NULL) { diff --git a/test/core/util/passthru_endpoint.h b/test/core/util/passthru_endpoint.h index da769024a5..23d21c6061 100644 --- a/test/core/util/passthru_endpoint.h +++ b/test/core/util/passthru_endpoint.h @@ -19,9 +19,11 @@ #ifndef MOCK_ENDPOINT_H #define MOCK_ENDPOINT_H +#include <grpc/support/atm.h> + #include "src/core/lib/iomgr/endpoint.h" -typedef struct { int num_writes; } grpc_passthru_endpoint_stats; +typedef struct { gpr_atm num_writes; } grpc_passthru_endpoint_stats; void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server, diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h index a7f8504505..9d345a909b 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -25,6 +25,7 @@ #include <grpc++/security/server_credentials.h> #include <grpc++/server.h> #include <grpc++/server_builder.h> +#include <grpc/support/atm.h> #include <grpc/support/log.h> extern "C" { @@ -259,7 +260,8 @@ class InProcessCHTTP2 : public EndpointPairFixture { void AddToLabel(std::ostream& out, benchmark::State& state) { EndpointPairFixture::AddToLabel(out, state); out << " writes/iter:" - << (double)stats_.num_writes / (double)state.iterations(); + << static_cast<double>(gpr_atm_no_barrier_load(&stats_.num_writes)) / + static_cast<double>(state.iterations()); } private: |