-
Notifications
You must be signed in to change notification settings - Fork 1k
Open
Labels
Milestone
Description
Description
I've tried the below settings: cpr::async::startup(4,10);
But if launching massive POST requests to the CPR at the same time, after a while, the cpr::GlobalThreadPool::GetInstance()->GetIdelThreadm() output the value is greater than the 10.
I've taken a look at the source code, I think there needs to be a lock added when determining the thread numbers to create a new thread if the Submit is called concurrently:
auto Submit(Fn&& fn, Args&&... args) {
if (status == STOP) {
Start();
}
if (idle_thread_num <= 0 && cur_thread_num < max_thread_num) {
CreateThread();
}
Example/How to Reproduce
Just launching massive POST requests at the same time, then after a while, output the cpr::GlobalThreadPool::GetInstance()->GetIdelThreadm() .
Possible Fix
No response
Where did you get it from?
conan
Additional Context/Your Environment
- OS: Windows 10, Debian 12
- Version: Windows 10, Debian 12