import Foundation class ThreadSafeSet { private var set: Set = [] private let accessQueue = DispatchQueue(label: "com.example.ThreadSafeSet") func insert(_ newElement: T) { _ = accessQueue.sync { set.insert(newElement) } } func remove(_ element: T) { _ = accessQueue.sync { set.remove(element) } } var elements: Set { accessQueue.sync { set } } func contains(_ element: T) -> Bool { accessQueue.sync { set.contains(element) } } }