Testing if submit 2 nThreads pool task successfully.
146 {
147
149
150 auto func = [](int sec) -> bool
151 {
152 std::this_thread::sleep_for(std::chrono::seconds(sec));
153 return true;
154 };
155
156 std::vector<std::future<bool>> futures(2 * nThreads);
157 for (int i = 0; i < 2 * nThreads; i++)
158 {
159 futures[i] = m_ThreadPool.SubmitPoolTask(std::bind(func, 2));
160 }
161
162 func(1);
163
164 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
165 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,0 );
167 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
168 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,2 * nThreads );
169 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
170 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
171
172
173 for (int i = 0; i < 2 * nThreads; i++)
174 {
175 futures[i].get();
176 }
177
178 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
179 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,2 * nThreads );
181 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
182 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,2 * nThreads );
183 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
184 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
185
186
187 func(25);
188
189 EXPECT_EQ(m_ThreadPool.GetInitThreadSize() ,nThreads );
190 EXPECT_EQ(m_ThreadPool.GetIdleThreadSize() ,nThreads );
192 EXPECT_EQ(m_ThreadPool.GetTasks() ,0 );
193 EXPECT_EQ(m_ThreadPool.GetThreadsCount() ,nThreads );
194 EXPECT_EQ(m_ThreadPool.GetThreadIdleTimeOut(),10 );
195 EXPECT_EQ(m_ThreadPool.IsPoolRunning() ,true );
196 }
#define SPICESTEST_PROFILE_FUNCTION()