Re: FD_SETSIZE on Linux?
От | Tom Lane |
---|---|
Тема | Re: FD_SETSIZE on Linux? |
Дата | |
Msg-id | 13030.1410304861@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | FD_SETSIZE on Linux? (Thom Brown <thom@linux.com>) |
Ответы |
Re: FD_SETSIZE on Linux?
|
Список | pgsql-hackers |
Thom Brown <thom@linux.com> writes: > I find this in pgbench.c: > #ifdef FD_SETSIZE > #define MAXCLIENTS (FD_SETSIZE - 10) > #else > #define MAXCLIENTS 1024 > #endif FD_SETSIZE is supposed to be defined, according to the POSIX spec: The <sys/select.h> header shall define the following symbolic constant, which shall have a value suitable for use in#if preprocessing directives: FD_SETSIZEMaximum number of file descriptors in an fd_set structure. It looks like Linux sets it to 1024. On RHEL6, at least, I find this: $ grep -r FD_SETSIZE /usr/include /usr/include/linux/posix_types.h:#undef __FD_SETSIZE /usr/include/linux/posix_types.h:#define __FD_SETSIZE 1024 ... /usr/include/sys/select.h:#define FD_SETSIZE __FD_SETSIZE ... > #ifdef WIN32 > #define FD_SETSIZE 1024 /* set before winsock2.h is included */ > #endif /* ! WIN32 */ Windows probably hasn't got sys/select.h at all, so it may not provide this symbol. Interestingly, it looks like POSIX also requires <sys/time.h> to define FD_SETSIZE. I wonder whether Windows has that header? It'd definitely be better to get this symbol from the system than assume 1024 will work. regards, tom lane
В списке pgsql-hackers по дате отправления: