MCPcopy Create free account
hub / github.com/ElementsProject/elements / ThreadBody

Method ThreadBody

src/leveldb/benchmarks/db_bench.cc:549–575  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

547 };
548
549 static void ThreadBody(void* v) {
550 ThreadArg* arg = reinterpret_cast<ThreadArg*>(v);
551 SharedState* shared = arg->shared;
552 ThreadState* thread = arg->thread;
553 {
554 MutexLock l(&shared->mu);
555 shared->num_initialized++;
556 if (shared->num_initialized >= shared->total) {
557 shared->cv.SignalAll();
558 }
559 while (!shared->start) {
560 shared->cv.Wait();
561 }
562 }
563
564 thread->stats.Start();
565 (arg->bm->*(arg->method))(thread);
566 thread->stats.Stop();
567
568 {
569 MutexLock l(&shared->mu);
570 shared->num_done++;
571 if (shared->num_done >= shared->total) {
572 shared->cv.SignalAll();
573 }
574 }
575 }
576
577 void RunBenchmark(int n, Slice name,
578 void (Benchmark::*method)(ThreadState*)) {

Callers

nothing calls this directly

Calls 4

SignalAllMethod · 0.80
WaitMethod · 0.45
StartMethod · 0.45
StopMethod · 0.45

Tested by

no test coverage detected