10 #include "gtest/gtest.h" 18 const int TasksCnt = 100;
23 int IncrementsPerTask = 1000;
29 auto scheduleIncrements = [&]() {
30 for (
int TaskI = 0; TaskI < TasksCnt; ++TaskI) {
31 Tasks.
runAsync(
"task", [&Counter, &Mutex, IncrementsPerTask]() {
32 for (
int Increment = 0; Increment < IncrementsPerTask; ++Increment) {
33 std::lock_guard<std::mutex> Lock(Mutex);
43 std::lock_guard<std::mutex> Lock(Mutex);
49 std::lock_guard<std::mutex> Lock(Mutex);
50 ASSERT_EQ(Counter, TasksCnt * IncrementsPerTask);
54 std::lock_guard<std::mutex> Lock(Mutex);
60 std::lock_guard<std::mutex> Lock(Mutex);
61 ASSERT_EQ(Counter, TasksCnt * IncrementsPerTask);
TEST_F(BackgroundIndexTest, NoCrashOnErrorFile)
void runAsync(const llvm::Twine &Name, llvm::unique_function< void()> Action)
Runs tasks on separate (detached) threads and wait for all tasks to finish.
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//