关于stream 优先级的疑问 #215
-
由于tquic engine是运行在单线程模式下, 其他线程对多个stream的write操纵,最终会以异步task挂到 tquic engine的事件循环中,顺序进行stream_write. 这里有个疑问: |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
在TQUIC中,尽管引擎是运行在单线程模式下,但是它支持异步任务和事件循环,确保了即使在多线程环境下也能高效处理网络IO。对于您提到的每个stream的写操作后立即调用 在TQUIC中,stream优先级的设计意图是为了在网络条件受限(如带宽有限)的情况下,能够优先发送或处理更重要的数据流。如果每次写操作后都立即flush,那么数据发送的顺序确实主要取决于异步任务的执行顺序,这可能会降低优先级设置的实际效用。 为了更好地利用stream优先级,一个可能的实践是在写入数据到多个stream后,统一调用一次 此外,如果应用场景中确实需要细粒度地控制数据发送的优先级和时机,可以考虑在应用层面实现更高级的调度逻辑,比如维护一个优先级队列,根据业务逻辑和网络状况动态调整数据发送的策略。 总之,stream优先级的最佳实践取决于具体的应用需求和网络环境。在一些场景下,合理利用stream优先级可以显著提升应用性能和用户体验,但实现上可能需要更多的策略和调整。 |
Beta Was this translation helpful? Give feedback.
建议批量执行stream写操作,再触发执行quic_endpoint_process_connections
注意:quic_endpoint_process_connections并不一定会发送所有缓冲的流数据,实际发送还会受到拥塞窗口限制