2025-11-20 05:26:49
首先得明白select是等事件用的工具,它得知道要监多少个地方。比如你同时开十个窗口等消息,每个窗口占一个位置,1024就是能放这么多位置的最大数。但实际用的时候,如果已经用了九个窗口,那1024得减去九,变成1015个位置留给新窗口。这样select才能准确知道该往哪找新消息。
为啥要减呢?因为select内部有个数组存监听项,数组长度不能超过1024。比如你用Python的select库,最多开1023个监听项。假设已经开了九个,那1024-9=1015就是还能开的数量。官方文档写得很清楚,最多1023个,所以每次计算都要减去已用数。就像你手机内存128G,装了30G应用,还能装98G新软件,本质都是总量减已用。但有人会搞错,比如直接写1024,结果超了会报错。有个程序员朋友就踩过这个坑,他同时开1025个窗口,程序直接崩了,后来发现是没减已用数。所以每次用select前,得先算好这个差值,确保不超过数组容量。
本题链接: