aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--test/core/support/cpu_test.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/test/core/support/cpu_test.c b/test/core/support/cpu_test.c
index fa83878a15..138ad6a19e 100644
--- a/test/core/support/cpu_test.c
+++ b/test/core/support/cpu_test.c
@@ -80,7 +80,7 @@ static void worker_thread(void *arg) {
struct cpu_test *ct = (struct cpu_test *)arg;
gpr_uint32 cpu;
int r = 12345678;
- int i, j;
+ unsigned i, j;
for (i = 0; i < 1000 / GRPC_TEST_SLOWDOWN_FACTOR; i++) {
/* run for a bit - just calculate something random. */
for (j = 0; j < 1000000 / GRPC_TEST_SLOWDOWN_FACTOR; j++) {
@@ -90,7 +90,13 @@ static void worker_thread(void *arg) {
GPR_ASSERT(cpu < ct->ncores);
gpr_mu_lock(&ct->mu);
ct->used[cpu] = 1;
+ for (j = 0; j < ct->ncores; j++) {
+ if (!ct->used[j]) break;
+ }
gpr_mu_unlock(&ct->mu);
+ if (j == ct->ncores) {
+ break; /* all cpus have been used - no further use in running this test */
+ }
}
gpr_mu_lock(&ct->mu);
ct->r = r; /* make it look like we care about r's value... */