从单独的线程发送UDP

时间:2013-02-09 21:48:31

标签: c++ c sockets udp

我有一个通过UDP记录状态切换的程序。我需要尽可能快地记录日志功能,但要知道网络被认为很慢。从单独的线程发送UDP数据有什么好处,或者只是快速调用UDP,因为不需要设置或等待(假设我预先打开了套接字)? 如果它立即返回我没关系,但如果在内部它等待一些I / O资源,它可能是一个问题。是吗?

2 个答案:

答案 0 :(得分:1)

如果你没有发送大量数据[我每分钟都意味着兆字节数] [或极其频繁](每分钟数百包),我希望send(或write )相当快。

需要很长时间的唯一原因是,如果您提供的数据超出了网络所能提供的数据,那么内核必须等待一个空闲的缓冲区才能变为可用。

与性能相关的所有内容一样,测量总是比在互联网上询问更好...我希望,在现代PC上,sendmsg呼叫大约是几百个小数据包的纳秒数,如果数据包超过几十个字节,则每8字节大约一个纳秒,最大为几千字节。当你达到数百千字节时,时间增加了3-10倍。

答案 1 :(得分:0)

可能。要防止它等待,只需将套接字设置为非阻塞 您可能有兴趣看到how Python sets the appropriate flag