From 75912f513a2d33a9cb37e44d84b299ede01f2226 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Fri, 21 Mar 2025 18:04:24 +0100 Subject: [PATCH] fix: prevented multiple frequency readers runs at once (#2449) --- Modules/CPU/readers.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Modules/CPU/readers.swift b/Modules/CPU/readers.swift index e2253520..0385e563 100644 --- a/Modules/CPU/readers.swift +++ b/Modules/CPU/readers.swift @@ -301,6 +301,7 @@ public class FrequencyReader: Reader<[Double]> { private var prev: (samples: CFDictionary, time: TimeInterval)? = nil private let measurementCount: Int = 4 + private var isReading: Bool = false private struct IOSample { let group: String @@ -320,7 +321,8 @@ public class FrequencyReader: Reader<[Double]> { } public override func read() { - guard !self.eCoreFreqs.isEmpty && !self.pCoreFreqs.isEmpty, self.channels != nil, self.subscription != nil else { return } + guard !self.isReading, !self.eCoreFreqs.isEmpty && !self.pCoreFreqs.isEmpty, self.channels != nil, self.subscription != nil else { return } + self.isReading = true let minECoreFreq = Double(self.eCoreFreqs.min() ?? 0) let minPCoreFreq = Double(self.pCoreFreqs.min() ?? 0) @@ -352,6 +354,7 @@ public class FrequencyReader: Reader<[Double]> { let pFreq: Double = pCores.reduce(0, { $0 + $1 }) / Double(self.measurementCount) self.callback([eFreq, pFreq]) + self.isReading = false } } @@ -421,7 +424,12 @@ public class FrequencyReader: Reader<[Double]> { for _ in 0..