2014-12-30 132 views
1

我们有一个系统在同一时间范围内产生1到N个异步请求(“foo”)。这些在主线程以外的线程上启动,并且所有这些请求都不一定来自同一个线程。分析同步异步请求的一般策略

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

所有完成'请求方'对我们来说都是不透明的。我们无法访问该库。

到目前为止,我们已经得到了一个非常简单的分析器,它基本上调用markStart('measurement name')markDone('measurement name')来计时请求。我越来越接近于从我们开始foo请求的时间开始到通过bar处理它的个人foo请求。

很明显,我们现有的分析器不起作用,我需要引入一种方法,将正确的markDone()回调调用与其对应的markStart()从foo关联起来。

如果我们的请求有某种方式的序列号返回响应,它将是直截了当的,但我们没有这些。

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

回答

1

我不知道任何将用于此的分析器。 这并不意味着它们不存在。

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

因此,这里有一些扫描页面:

enter image description here

enter image description here

enter image description here

+0

感谢麦克。这太棒了。我一直在想如何解决这个问题,这是一个非常有趣的整体观点。周末我会考虑一些不错的问题。 –