翻譯原文:https://lwn.net/Articles/542629/
Linux Kernel 3.9中合併了TCP/UDP的SO_REUSEPORT特性。
允許多個進程(或者線程)綁定同一個端口:
int sfd = socket(domain, socktype, 0);
int optval = 1;
setsockopt(sfd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
bind(sfd, (struct sockaddr *) &addr, addrlen);
...
while (1) {
new_fd = accept(...);
process_connection(new_fd);
}
一般地,當連接進來時,進程會被不均衡的喚醒。SO_REUSEPORT特性,能夠實現將連接均衡地分配到各個進程。
沒有實踐過這個新特性,不知道表現如何。