socket新特性之SO_REUSEPORT

来源:互联网 发布:淘宝跑腿服务 编辑:程序博客网 时间:2024/06/10 06:37

翻译原文: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特性,能够实现将连接均衡地分配到各个进程。

没有实践过这个新特性,不知道表现如何。

0 0