我有应用程序,我正在使用select
监听多个套接字。如果我开始处理从套接字A进来的请求,同时如果套接字B上的另一个请求到达,那么我想知道套接字B请求在我得到它之前必须等待多长时间。由于这是一个单线程应用程序,我无法生成新线程并返回select
再次监视并立即从套接字B开始处理请求。
是否有' C' api可以获得这个指标或者这是不可能得到的?
答案 0 :(得分:0)
如何测量“数据就绪”时间和“数据读取”时间之间的间隔没有直接的方法,因为没有任何时间戳与数据一起写入。此外情况更加复杂,因为面向流的套接字可能会接收多个数据段,直到选择关闭,而不是应该测量的间隔。
如果应用程序数据处理比内核中的数据包处理更长,您可以通过以下方式进行合理的测量:
-j LOG
配置iptables防火墙规则(如果它在Linux上运行)。当然上面的想法确实忽略了内核处理时间。如果你真的需要确切的时间,我必须为你的应用程序引入一个新的线程。