是否可以通过任何方式更改进程可以创建的pthread数限制? 目前在我的linux系统上,我可以创建大约380个线程,但是我想增加一点,只要内存可用即可。更改应用程序的最大线程数限制
回答
'猫吗?/proc/sys/kernel/threads-max'显示'16384',但是我不能创建超过380个pthreads,我甚至尝试过把一个空白函数作为线程的主体 – Sukanto 2009-12-22 16:34:52
你会得到什么错误? – 2009-12-22 17:07:20
在380个线程之后我得到'EAGAIN'作为'pthread_create()'的返回值,它根据'pthread_create()'手册页是'系统缺乏必要的资源来创建另一个线程,或系统施加的限制进程{PTHREAD_THREADS_MAX}中的线程总数将被超出。“ – Sukanto 2009-12-23 08:29:41
您的问题是你有没有叫pthread_detach上有问题的线程。这告诉pthread,当线程终止时,与每个线程关联的资源将被释放。您必须在所有线程上调用pthread_join或pthread_release来释放线程资源。这意味着您还必须在您的pthread_join取消处理程序或泄漏中调用pthread_detach。
减少用户堆栈大小'ulimit -s 1024
';
default: 8MB
reduced: 1MB
增加线程数。
设置堆栈大小:pthread_attr_setstacksize(1024)
cat /proc/sys/kernel/threads-max
可以在Linux下工作,但没有其他UNIX系统。我认为正确的方法是
Maximum number of threads per process - sysconf(_SC_THREAD_THREADS_MAX) failing
其中一些UNIX系统的工作原理(如HP-UX),但无法在Solaris或Linux ...
- 1. 最大线程限制?
- 2. Cordova应用程序中LocalStorage/IndexedDb的最大大小限制
- 3. iPhone应用程序的大小限制
- 4. 一个应用程序的最大线程数?
- 5. 限制iPhone应用程序无线
- 6. 如何更改提升线程限制?
- 7. 试图限制Facebook应用程序的最大请求
- 8. 如何更改lpSolve中的重量限制?线性编程,最大化CCR DEA
- 9. 线程问题,同时线程限制,同时运行最大线程问题
- 10. 应用程序服务器最大内存限制
- 11. 如何限制perl中并行线程的最大数量
- 12. 如何限制Java中的最大线程数?
- 13. 限制线程池线程的数量
- 14. 控制SelectMany的最大线程数
- 15. WPF应用程序更改大小
- 16. 最大限度地减少Android应用程序中的应用程序
- 17. 应用程序商店,大小限制和更多
- 18. ASP.NET限制应用程序
- 19. 应用程序Android限制
- 20. Facebook应用程序限制
- 21. 最大并发线程数小于最大线程池大小
- 22. 与数据库的连接限制和应用程序中的Java线程数
- 23. 部署PHP应用程序并限制代码更改
- 24. C++更改最大RAM限制
- 25. Solaris线程的最大数
- 26. 线程池最大线程
- 27. 如何在Android应用程序中更改(线程的)堆栈大小?
- 28. 应用程序中的最佳线程数应该是多少?
- 29. 用户模式调度程序线程的最大数量
- 30. 我的iPhone应用程序的最小应用程序大小?
有趣的......你有没有考虑一些这样的含义系统设计?想到单点故障(SPOF)。 – jldupont 2009-12-22 15:53:51
我不是专家,但我敢打赌,拥有超过380个线程将会通过上下文切换压倒你的处理器。线程的上下文切换小于单独的进程,但是你仍然需要保存程序计数器和寄存器文件,或许还有一些我忘记的东西。你认为你需要多少个线程?我建议分析你的应用程序来确定10个线程与100个线程的线程开销,然后尝试推断出你的目标线程数。你可能会发现它最终不值得付出努力。或者,也许我错了...... – 2009-12-22 16:02:28
我几乎不会在任何地方使用它......但我需要它进行一些实验吗? – Sukanto 2009-12-22 16:16:01