如何使用 DispatchQueue 从单例字典启动和停止 Firebase 性能跟踪

Posted

技术标签:

【中文标题】如何使用 DispatchQueue 从单例字典启动和停止 Firebase 性能跟踪【英文标题】:How to start and stop Firebase performance traces from a singleton dictionary with DispatchQueue 【发布时间】:2021-04-26 09:11:06 【问题描述】:

我正在实施 Firebase 性能跟踪,因此我创建了一个共享实例并添加了一个字典来保存它们。 我理解的字典不是线程安全的,我需要添加一个调度队列来处理这个。

我应该如何使用 DispatchQueue 来获得最准确的跟踪? 还是我采取了错误的方法来测量痕迹?

import FirebasePerformance

class Tracing 
    static let shared = Tracing()
    let queue = DispatchQueue(label: "thread-safe-tracing")

    var traces = [String: Trace]()

    static func startTracing(name: String) 
        shared.queue.sync 
            if let trace = Performance.startTrace(name: name) 
                shared.traces[name] = trace
            
        
    

    static func stop(name: String) 
        shared.queue.sync 
            if let trace = shared.traces[name] 
                trace.stop()
                shared.traces[name] = nil
            
        
    

  

【问题讨论】:

【参考方案1】:

您已尝试使用synchronus 方法,请尝试使用Asynchronus 并告诉我。

【讨论】:

以上是关于如何使用 DispatchQueue 从单例字典启动和停止 Firebase 性能跟踪的主要内容,如果未能解决你的问题,请参考以下文章

MultiTenant自定义ILogger - 不能从单例中使用作用域服务

从单例模式看Vue单例组件

从单例模式说起

从单例模式说起

[死磕 Spring 17/43] --- IOC 之从单例缓存中获取单例 bean

c++:从单例到内存屏障