+
+ template <typename Map>
+ void JunctionThreading(Map* map, size_t pass_count) {
+ std::unique_ptr<std::thread[]> threads(new std::thread[s_nThreadCount]);
+ std::unique_ptr<size_t[]> inserted_nums(new size_t[s_nThreadCount]);
+ std::unique_ptr<size_t[]> deleted_nums(new size_t[s_nThreadCount]);
+ for (size_t i = 0; i < s_nThreadCount; i++) {
+ threads[i] = std::thread(run_test<Map>, map, pass_count,
+ &inserted_nums[i], &deleted_nums[i]);
+ }
+ size_t inserted_sum = 0;
+ size_t deleted_sum = 0;
+ for (size_t i = 0; i < s_nThreadCount; i++) {
+ threads[i].join();
+ inserted_sum += inserted_nums[i];
+ deleted_sum += deleted_nums[i];
+ }
+ EXPECT_LE(deleted_sum, inserted_sum);
+ }