分析同步异步请求的一般策略

时间:2014-12-30 18:27:05

标签: multithreading asynchronous callback profiling

我们有一个系统在同一时间范围内产生1到N个异步请求(“foo”)。这些是在main之外的线程上启动的,所有这些请求都不一定来自同一个线程。

异步请求的回调都在一个特定的线程上处理,为了便于讨论,我们将调用'bar'线程。

完成所有“请求方”对我们来说是不透明的。我们无权访问该库。

到目前为止,我们已经找到了一个非常天真的分析器,它基本上会调用markStart('measurement name')markDone('measurement name')来为请求计时。从我们开始foo请求到由bar处理它的时候,我越来越需要描述各个foo请求。

显然我们现有的分析器不起作用,我需要介绍一种方法,将回调中的正确markDone()调用与foo中相应的markStart()相关联。

如果我们的请求以某种方式返回序列号作为响应,那么它将是直接的,但我们没有这些。

是否存在一种智能,通用的方式,我可以将ID与每个请求相关联,这在线程中是可见的,或者在这种情况下的分析通常以不同的方式处理(如果有的话)?

1 个答案:

答案 0 :(得分:1)

我不知道任何对此有用的分析器。 这并不代表他们不存在。

我之前遇到过这种问题。 我写了一本书,并在其中讨论过这个问题。 基本上我提出了两种方法,一种在线程内工作,另一种在线程之间工作。 你真的需要两者,因为任何一方都可以不必要地花时间。

所以这里有一些扫描页面:

enter image description here

enter image description here

enter image description here