我有一个从非阻塞套接字读取的单独线程,我可以根据需要使用尽可能多的CPU,因为低延迟是项目最重要的方面。简单地循环读取()调用比使用select()首先查找可读的套接字更快吗?
的伪代码:
while (!finished) {
int rc = read(socket, buf);
if (rc > 0) {
// process buf
} else if (rc == 0) {
// eof, reconnect to server
} else if (errno == EGAIN) {
// nothing to do, continue
} else if (errno == ECONNREFUSED) {
// connection refused, attempt connect again
} else {
// error not yet supported
}
}
答案 0 :(得分:1)
不,它不会更快,因为您不知道数据何时到达。所以,要么你会睡得太久,哪个不会更快,要么你会睡得太短,在这种情况下,你必须再这么做,这不会更快,或者你会很幸运,准确地睡觉正确的时间,这不是更快,需要运气,或者你根本不会睡觉,这意味着你必须刻录CPU直到数据到达,这也不会更快。