Add NSLock to protect lazily loaded tables in multithread concurrent setting
This commit is contained in:
@@ -47,14 +47,14 @@ final class MTFontMathTableV2Tests: XCTestCase {
|
||||
func helperConcurrentMTFontMathTableV2(_ count: Int, mtfont: MTFontV2, in group: DispatchGroup, on queue: DispatchQueue) {
|
||||
let workitem = DispatchWorkItem {
|
||||
let mTable = mtfont.mathTable
|
||||
// let values = [
|
||||
// mTable?.fractionNumeratorDisplayStyleShiftUp,
|
||||
// mTable?.fractionNumeratorShiftUp,
|
||||
// mTable?.fractionDenominatorDisplayStyleShiftDown,
|
||||
// mTable?.fractionDenominatorShiftDown,
|
||||
// mTable?.fractionNumeratorDisplayStyleGapMin,
|
||||
// mTable?.fractionNumeratorGapMin,
|
||||
// ].compactMap{$0}
|
||||
let values = [
|
||||
mTable?.fractionNumeratorDisplayStyleShiftUp,
|
||||
mTable?.fractionNumeratorShiftUp,
|
||||
mTable?.fractionDenominatorDisplayStyleShiftDown,
|
||||
mTable?.fractionDenominatorShiftDown,
|
||||
mTable?.fractionNumeratorDisplayStyleGapMin,
|
||||
mTable?.fractionNumeratorGapMin,
|
||||
].compactMap{$0}
|
||||
// if count % 50 == 0 {
|
||||
// print(values) // accessed these values on global thread.
|
||||
// }
|
||||
@@ -62,16 +62,16 @@ final class MTFontMathTableV2Tests: XCTestCase {
|
||||
}
|
||||
workitem.notify(queue: .main) { [weak self] in
|
||||
// print("\(Thread.isMainThread ? "main" : "global") completed .....")
|
||||
// let mTable = mtfont.mathTable
|
||||
let mTable = mtfont.mathTable
|
||||
if count % 70 == 0 {
|
||||
// let values = [
|
||||
// mTable?.fractionNumeratorDisplayStyleShiftUp,
|
||||
// mTable?.fractionNumeratorShiftUp,
|
||||
// mTable?.fractionDenominatorDisplayStyleShiftDown,
|
||||
// mTable?.fractionDenominatorShiftDown,
|
||||
// mTable?.fractionNumeratorDisplayStyleGapMin,
|
||||
// mTable?.fractionNumeratorGapMin,
|
||||
// ].compactMap{$0}
|
||||
let values = [
|
||||
mTable?.fractionNumeratorDisplayStyleShiftUp,
|
||||
mTable?.fractionNumeratorShiftUp,
|
||||
mTable?.fractionDenominatorDisplayStyleShiftDown,
|
||||
mTable?.fractionDenominatorShiftDown,
|
||||
mTable?.fractionNumeratorDisplayStyleGapMin,
|
||||
mTable?.fractionNumeratorGapMin,
|
||||
].compactMap{$0}
|
||||
// if count % 50 == 0 {
|
||||
// print(values)
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user