Testing if submit task get correct blocked result successfully. With profermance test.
153 {
154
156
157 auto func = [](uint32_t a, uint32_t b) -> uint32_t
158 {
159 uint32_t val = 0;
160 for (uint32_t i = a; i < b; i++)
161 {
162 val += i;
163 }
164 return val;
165 };
166
167 auto inTime = std::chrono::high_resolution_clock::now();
168
169 std::future<uint32_t> future0 = m_ThreadPool.SubmitPoolTask(std::bind(func, 0 , 100000000));
170 std::future<uint32_t> future1 = m_ThreadPool.SubmitPoolTask(std::bind(func, 100000000, 200000000));
171 std::future<uint32_t> future2 = m_ThreadPool.SubmitPoolTask(std::bind(func, 200000000, 300000000));
172 std::future<uint32_t> future3 = m_ThreadPool.SubmitPoolTask(std::bind(func, 300000000, 400000000));
173 std::future<uint32_t> future4 = m_ThreadPool.SubmitPoolTask(std::bind(func, 400000000, 500000000));
174
175 const uint32_t subThreadCalVal = future0.get() + future1.get() + future2.get() + future3.get() + future4.get();
176
177 auto multiThreadTime = std::chrono::high_resolution_clock::now();
178
179 std::cout << "Calculate with multiple thread cost: " << std::chrono::duration_cast<std::chrono::milliseconds>(multiThreadTime - inTime).count() << std::endl;
180
181 inTime = std::chrono::high_resolution_clock::now();
182
183 const uint32_t mainThreadCalVal = func(0, 500000000);
184
185 multiThreadTime = std::chrono::high_resolution_clock::now();
186
187 std::cout << "Calculate with main thread cost: " << std::chrono::duration_cast<std::chrono::milliseconds>(multiThreadTime - inTime).count() << std::endl;
188
189 EXPECT_EQ(mainThreadCalVal, subThreadCalVal);
190 }
#define SPICESTEST_PROFILE_FUNCTION()