Skip to content

关于文档中“concurrency”的理解 #17

Answered by TANSixu
faccoco asked this question in Q&A
Discussion options

You must be logged in to vote

Hi, 感谢提问!这是本次project中最重要的问题之一,我们可以给出如下提示:

注意到我们的单线程框架代码有一个主循环,一个可能的concurrency设计思路是在主循环中根据每次收到的包判断该包应该属于哪个传输。例如,考虑如下情景:

A同时和B,C建立了传输,B,C都在向A发一个chunk(一个chunk约500个包)

  • A在时刻t收到了来自B的 $pkt_1$ , A此时应该需要能够认出这是来自B的包,并将其归入B的传输(存储,更新windowsize等等)。
  • A在时刻t+1收到了来自C的 $pkt_1$ , A应该需要认出这是来自C的,并调用传输C的信息。
  • 此后,A可能会轮流收到来自B或C的包(也可能一会儿B一会儿C),但只要A能够根据包的信息找到对应的传输,A就可以实现并发的效果(同时接收两个chunk的包)。注意此处需要实现的concurrency并不是指并行。

综上,一个可能的设计是:

  • 维护每个传输的信息
  • 在每个包收到时调用对应传输信息

文档中此部分的配图可能不太直观,如果有后续问题可继续和我们讨论。
此issue将会被移到discussion,此后可在讨论版查看 discussion board

非常感谢!

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by TANSixu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
good first issue Good for newcomers
2 participants
Converted from issue

This discussion was converted from issue #16 on December 09, 2022 09:55.