diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.c index 1bf28885039..ed392552946 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 da769024a54..23d21c60615 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 + #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 a7f85045052..9d345a909be 100644 --- a/test/cpp/microbenchmarks/fullstack_fixtures.h +++ b/test/cpp/microbenchmarks/fullstack_fixtures.h @@ -25,6 +25,7 @@ #include #include #include +#include #include 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(gpr_atm_no_barrier_load(&stats_.num_writes)) / + static_cast(state.iterations()); } private: