我的服务器使用非阻塞套接字多路复用。我想使用一个线程来接收传入的连接并处理输入,并使用另一个线程来通过套接字发送数据。它看起来像这样:
reader_worker(...)
{
...
select(fd_max+1, &read_set, NULL, NULL, NULL);
...
}
writer_worker(...)
{
...
select(fd_max+1, NULL, &write_set, NULL, NULL);
...
}
由于我不想错过传入的连接,我可以想象在单独的线程中接收和发送会更好。我是否必须锁定可能在 read_set 和 write_set 中的套接字?这是正确的方法还是这种方法没有任何性能改进?