Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于自动释放线程的一个问题 #30

Open
sumover opened this issue Aug 15, 2023 · 0 comments
Open

关于自动释放线程的一个问题 #30

sumover opened this issue Aug 15, 2023 · 0 comments

Comments

@sumover
Copy link

sumover commented Aug 15, 2023

作者您好, 您的线程池的代码第132行中提到了关于自动释放线程的问题.

if (_idlThrNum>0 && _pool.size() > _initSize) //支持自动释放空闲线程,避免峰值过后大量空闲线程
						return;

这段代码中, 您选择如果当前存在空闲线程时就会主动关闭线程. 但是这里我认为其存在一定的问题, 因为线程池中虽然该线程已经关闭, 但是仍然该线程的资源仍然在_pool中, 那么在后续的工作中, 该线程资源将不会被再次使用. 这里会不会造成一定的资源浪费的问题.

举一个比较极端的例子, 假设我吧最大线程数开到了1e5, 然后瞬间增加了1e6个任务, 这些任务都完成了之后, 显然这里会出现1e5个空闲线程, 根据这里的机制, 我们会结束前面申请的所有的线程. 但是这里开的1e5个线程仍然是占据这_pool的内存的. 如果我经常性的重复上述过程, 那显然就会造成_pool的大小越来越大, 显然这是不合理的.

请问作者, 是否已经存在一些针对该问题的解决机制(我粗心没看到).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant