我们有一个系统在同一时间范围内产生1到N个异步请求(“foo”)。这些是在main之外的线程上启动的,所有这些请求都不一定来自同一个线程。
异步请求的回调都在一个特定的线程上处理,为了便于讨论,我们将调用'bar'线程。
完成所有“请求方”对我们来说是不透明的。我们无权访问该库。
到目前为止,我们已经找到了一个非常天真的分析器,它基本上会调用markStart('measurement name')
和markDone('measurement name')
来为请求计时。从我们开始foo请求到由bar处理它的时候,我越来越需要描述各个foo请求。
显然我们现有的分析器不起作用,我需要介绍一种方法,将回调中的正确markDone()
调用与foo中相应的markStart()
相关联。
如果我们的请求以某种方式返回序列号作为响应,那么它将是直接的,但我们没有这些。
是否存在一种智能,通用的方式,我可以将ID与每个请求相关联,这在线程中是可见的,或者在这种情况下的分析通常以不同的方式处理(如果有的话)?
答案 0 :(得分:1)
我不知道任何对此有用的分析器。 这并不代表他们不存在。
我之前遇到过这种问题。 我写了一本书,并在其中讨论过这个问题。 基本上我提出了两种方法,一种在线程内工作,另一种在线程之间工作。 你真的需要两者,因为任何一方都可以不必要地花时间。
所以这里有一些扫描页面: