是否有可能通过任何方式更改进程可以创建的pthread数量限制? 目前在我的linux系统上,我可以创建大约380个线程,但我希望只要内存可用就增加它。
答案 0 :(得分:6)
减少用户的筹码量“ulimit -s 1024
”;
default: 8MB
reduced: 1MB
增加线程数。
设置堆栈大小:pthread_attr_setstacksize(1024)
答案 1 :(得分:3)
你的问题是你没有在有问题的线程上调用pthread_detach。这告诉pthread,当线程终止时,将释放与每个线程关联的资源。您必须在所有线程上调用pthread_join或pthread_release来释放线程资源。这意味着您还必须在pthread_join取消处理程序中调用pthread_detach或泄漏。
答案 2 :(得分:3)
cat /proc/sys/kernel/threads-max
可能在Linux中有效,但在其他UNIX系统中无效。我认为正确的方法是
Maximum number of threads per process - sysconf(_SC_THREAD_THREADS_MAX) failing
适用于某些UNIX系统(如HPUX),但不适用于Solaris或Linux ......
答案 3 :(得分:1)