我正在编写一个基于 epoll 循环和线程池的网络应用程序来处理请求。在每个线程中,我特别注意不要阻塞客户端读取,方法是使用非阻塞套接字并在读取返回 EAGAIN 时立即返回(或 EWOULDBLOCK 符合 POSIX ......)。
我也应该特别注意套接字写入吗?我没有看到自己发送足够的数据来填充系统 TCP 缓冲区,并且阻塞一段时间应该不会太有害。这是对套接字进行写入阻塞的唯一情况吗?缓冲区大小不够?
此外,可以将套接字声明为非阻塞读取和阻塞写入吗?还是我应该一直使用 fcntl 在这些行为之间切换?
谢谢!