Skip to content
Discussion options

You must be logged in to vote

对于您的问题,基于TQUIC的设计和文档描述,以下是对您的疑问的解答:

  1. TQUIC内部实现都是在一个单线程中吗?

    • TQUIC的设计允许它在多线程环境中运行,但是它的核心网络IO处理逻辑通常在单个线程(事件循环线程)中执行。这是为了简化状态管理和避免并发访问导致的问题。然而,TQUIC支持在多线程环境中使用,特别是在处理计算密集型任务或者需要与UI线程等进行交互时。关键是要确保对TQUIC API的调用是线程安全的,或者通过某种机制(如任务队列)将调用序列化到TQUIC的主事件循环线程。
  2. quic_stream_xxx 接口不能在tquic本身所在线程的其他线程中调用吗?

    • 一般来说,直接从非TQUIC主线程调用quic_stream_xxx接口可能会引起线程安全问题,因为TQUIC的状态管理和网络IO操作通常都假定在单个线程(即其主事件循环线程)中执行。如果需要从其他线程调用这些接口,应该采取措施确保这些调用在TQUIC的主线程中安全执行。这可以通过使用线程安全的队列将操作从其他线程发布到TQUIC的主线程,或者使用其他同步机制来实现。

关于您遇到的quic_stream_write返回-6的问题,这可能是因为从非主线程调用导致的线程安全问题,或者是因为流的状态不允许写入操作。建议检查TQUIC的日志以获取更详细的错误信息,并确保所有对TQUIC API的调用都遵循线程安全的原则。

总的来说,虽然TQUIC设计为支持多线程环境,但是直接从多个线程操作TQUIC的API需要小心处理,以避免线程安全问题。建议将所有TQUIC相关的操作都封装在一个安全的机制中…

Replies: 2 comments 9 replies

Comment options

You must be logged in to vote
8 replies
@stopandjoin
Comment options

@stopandjoin
Comment options

@stopandjoin
Comment options

@iyangsj
Comment options

@stopandjoin
Comment options

Answer selected by iyangsj
Comment options

You must be logged in to vote
1 reply
@stopandjoin
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants