python同时同步发送多个请求_python如何实现“发送一个请求,等待多个响应”的同步?...

我正在写一些代码通过串行口与单片机通信。

MCU端基本上是一个请求/响应服务器。

一个或多个MCU发送我的请求。

然而,响应可以异步到达并且具有随机延迟,但是响应的顺序将保持不变。

另外,我的应用程序可以一次发送多个请求。在

我为每个请求创建一个线程。

只有一个公共线程用于从串行端口进行接收。在

目前的结构是这样的:

请求线程写入串行端口,将其标识添加到等待列表,然后等待事件。

接收线程接收响应,在等待列表中查找,如果匹配的请求线程正在等待,则删除等待列表条目,并设置事件。

请求线程将收到有关事件的通知并继续处理。

如果每个请求只收到一个响应,那么这种方法很有效。在

现在假设有两个响应。

在处理第一个响应之后,请求线程再次将自己添加到等待列表中,并等待另一个事件。在

通常,接收线程在接收到第二个响应时执行相同的操作来设置事件。在

但是,有时,第二个响应到达得太快,在请求线程等待第二个事件之前。在

示例代码如下。在

请求线程:send_a_request(req)

add_waitlist(req, self)

self.event = threading.Event()

if not self.event.wait(1):

remove_waitlist(req, self)

#time out processing

else:

# process 1st response

add_waitlist(req, self)

self.event = threading.Event()

if not self.event.wait(1):

remove_waitlist(req, self)

# timeout processing

else:

# process 2nd response

接收线程:

^{pr2}$

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值