有更简单的方法来做到这一点,而不是通过实验。
大多数Unix系统提供ulimit
来显示您帐户中的各种软(即用户定义的)和硬(即管理员定义的)限制。例如,这里是在OS X上
$ ulimit -a -S
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
$ ulimit -a -H
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) unlimited
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 65532
cpu time (seconds, -t) unlimited
max user processes (-u) 1064
virtual memory (kbytes, -v) unlimited
我的软,硬限制虽然系统可以支持更多的进程,你的程序将通过这些限制的限制。我限制在709(什么奇数)的进程而它在单一时间提高到1064
的最大进程数是由pid_t
的大小,往往在内核中定义的限制的限制。有关更多详细信息,请参阅this answer以及this answer。
你可以做到这一点通过使用一个计数器,计数器递增,同时得到了一个叉。 –
它的工作原理,但需要使用只有他们的ID比较找到最大数量。 –