23 lines
1.2 KiB
Markdown
23 lines
1.2 KiB
Markdown
# Event handling
|
|
|
|
* Golang runtime uses `epoll`/`kqueue`/IOCP so no need for `libevent` or similar.
|
|
* See https://golang.org/search?q=netpoll#Global
|
|
|
|
## Existing techniques
|
|
|
|
For reference only, since using Go means we gain automatic integration.
|
|
|
|
From http://nginx.org/en/docs/events.html
|
|
|
|
| Method | Linux | macOS | Windows | BSD | UNIX | Notes |
|
|
|-----------|:-----:|:-----:|:-------:|:---:|:---------------:|:---------------------------------|
|
|
| select | X | X | X | X | X | Least efficient, widest support |
|
|
| poll | X | X | | X | X | Low efficiency, wide support |
|
|
| kqueue | | X, Go | | X | Go | Efficient |
|
|
| epoll | Go | | | | | Efficient |
|
|
| /dev/poll | | | | | X | Efficient |
|
|
| eventport | | | | | Solaris 10+, Go | Problems, use /dev/poll instead |
|
|
| IOCP | | | X, Go | | | Recommended for Windows |
|
|
|
|
* UNIX: Solaris, HP-UX, IRIX, Tru64
|
|
|