… | |
… | |
4441 | |
4441 | |
4442 | =head3 C<select> is buggy |
4442 | =head3 C<select> is buggy |
4443 | |
4443 | |
4444 | All that's left is C<select>, and of course Apple found a way to fuck this |
4444 | All that's left is C<select>, and of course Apple found a way to fuck this |
4445 | one up as well: On OS/X, C<select> actively limits the number of file |
4445 | one up as well: On OS/X, C<select> actively limits the number of file |
4446 | descriptors you can pass in to 1024 - your program suddenyl crashes when |
4446 | descriptors you can pass in to 1024 - your program suddenly crashes when |
4447 | you use more. |
4447 | you use more. |
4448 | |
4448 | |
4449 | There is an undocumented "workaround" for this - defining |
4449 | There is an undocumented "workaround" for this - defining |
4450 | C<_DARWIN_UNLIMITED_SELECT>, which libev tries to use, so select I<should> |
4450 | C<_DARWIN_UNLIMITED_SELECT>, which libev tries to use, so select I<should> |
4451 | work on OS/X. |
4451 | work on OS/X. |
… | |
… | |
4468 | this mechanism is very buggy. If you run into high CPU usage, your program |
4468 | this mechanism is very buggy. If you run into high CPU usage, your program |
4469 | freezes or you get a large number of spurious wakeups, make sure you have |
4469 | freezes or you get a large number of spurious wakeups, make sure you have |
4470 | all the relevant and latest kernel patches applied. No, I don't know which |
4470 | all the relevant and latest kernel patches applied. No, I don't know which |
4471 | ones, but there are multiple ones. |
4471 | ones, but there are multiple ones. |
4472 | |
4472 | |
4473 | If you can't get it to work, you can try running the program with |
4473 | If you can't get it to work, you can try running the program by setting |
4474 | C<LIBEV_FLAGS=3> to only allow C<poll> and C<select> backends. |
4474 | the environment variable C<LIBEV_FLAGS=3> to only allow C<poll> and |
|
|
4475 | C<select> backends. |
4475 | |
4476 | |
4476 | =head2 AIX POLL BUG |
4477 | =head2 AIX POLL BUG |
4477 | |
4478 | |
4478 | AIX unfortunately has a broken C<poll.h> header. Libev works around |
4479 | AIX unfortunately has a broken C<poll.h> header. Libev works around |
4479 | this by trying to avoid the poll backend altogether (i.e. it's not even |
4480 | this by trying to avoid the poll backend altogether (i.e. it's not even |