- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的 C 程序无法创建超过 8 threads
.它返回错误代码 EAGAIN(11)
.这是因为缺乏可用资源。在发布这个问题之前,我在谷歌上搜索了它的解决方案,但没有得到太多帮助。以下是我为我的程序和 unix 系统找到的详细信息。
我的线程创建函数是:-
thread_initialise(File *CFG_FILE)
{
int total_pthreads; //reads number of threads I want for the program from configuration file.
int rc =0 ;
for (i = 0; i < total_pthreads; i++)
{
rc = pthread_create (&pthread_list[i], NULL, (fp)(begin_worker_pthread), NULL);
if (rc !=0) printf("Thread creation Error Code: %d",rc);
}
}
我的程序在执行时消耗的内存是:pmap -x <pid> = 1111844
Unix 版本:uname -a = Linux 2.6.18-308.24.1.el5 #1 SMP Wed Nov 21 11:42:14 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
unix 中的线程最大值 cat /proc/sys/kernel/threads-max = 81920
ulimit -u max user processes (-u) 16000
ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 40960
max locked memory (kbytes, -l) 3000000
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 5857280
real-time priority (-r) 0
stack size (kbytes, -s) 512000
cpu time (seconds, -t) unlimited
max user processes (-u) 16000
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
请帮助我的系统如何计算/固定最大线程数。我想将线程增加到 32
.
最佳答案
从终端设置 ulimit -s 4000
。现在你可以运行比以前更多的线程,但你会在某些阶段遇到段错误。
线程数=总虚拟内存/(堆栈大小*1024*1024)
The number of threads per process can be increased by increasing total virtual memory or by decreasing stack size. But, decreasing stack size too much can lead to code failure due to stack overflow while max virtual memory is equals to the swap memory.
更多信息请参阅 this帖子解释清楚。
关于c - UNIX:程序中的最大线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18464041/
我是一名优秀的程序员,十分优秀!